说我有一个SQL查询
SELECT fname, lname, dob, ssn, address1, address2, zip, phone,state from users
现在说记录现在是字典库或强类型集合。
我有一个网格视图控件,我想将它绑定到我的集合,但我只想显示fname,lname,dob和ssn而不是其他列。
是否有一种简单的方法来提取列然后绑定到提取的项目?不确定LINQ在这里是否有用。
这是一个测试项目,因为我熟悉VS-2008的网络世界
答案 0 :(得分:4)
也许LINQ和一个匿名类可以帮你解决问题。
from user in UserCollection
select new { FirstName=user.fname, LastName=user.lname, Dob=user.dob, SSN=user.ssn }
答案 1 :(得分:1)
您可以指定要在gridview中显示的列。只需在aspx页面中指定所需的列:
<asp:GridView ID="gvwExample" runat="server" AutoGenerateColumns="False" >
<columns>
<asp:BoundField DataField="firstname" HeaderText="First Name" />
<asp:BoundField DataField="lastname" HeaderText="Last Name" />
<asp:BoundField DataField="hiredate" HeaderText="Date Hired" />
</columns>
</asp:GridView>
答案 2 :(得分:0)
您可以使用linq返回匿名类型(AKA元组)。该元组仅包含您要查找的属性。然后,您可以将网格绑定到该集合。谷歌匿名类型或C#中的元组,看看我的意思。
答案 3 :(得分:0)
假设您的数据采用某种形式的IENumerable&lt; T&gt;:
var filteredUser = from U in Users
select new { U.fname, U.lname, U.dob, U.SSN };
FilteredUser现在是一个只包含这些属性的集合。
这是LINQ To Objects的一个很酷的部分。您不需要使用LINQ-To-SQL来获取数据,您可以使用任何想要填充初始问题的内容,然后使用Linq-To-Objects在内存中将其删除。
答案 4 :(得分:0)
您可以根据需要使用linq。如果您已经为数据创建了dbml,那么您可以使用LINQ直接从db中提取记录(或者如果您的集合是IEnumerable),如下所示:
Dim _records = From user in users _
Select New With {.FirstName = user.fname,_
.Lastname = user.lname,.dob = user.dob,.ssn = user.ssn}
{gridcontrol}.datasource = _records