选择集合 - C#

时间:2008-11-13 22:45:25

标签: c# asp.net

说我有一个SQL查询

SELECT fname, lname, dob, ssn, address1, address2, zip, phone,state from users

现在说记录现在是字典库或强类型集合。

我有一个网格视图控件,我想将它绑定到我的集合,但我只想显示fname,lname,dob和ssn而不是其他列。

是否有一种简单的方法来提取列然后绑定到提取的项目?不确定LINQ在这里是否有用。

这是一个测试项目,因为我熟悉VS-2008的网络世界

5 个答案:

答案 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