C# 从LINQ查询中选择列
我希望能够选择在我的DataGridView中显示的列。也就是说,我有一个linq查询,它返回一个IEnumerable,但我不想显示策略的所有属性——我想让用户选择要显示的内容。因此,我认为类似这样的方法可以创建一个“更窄”的对象,其中只包含我想要的列C# 从LINQ查询中选择列,c#,linq-to-sql,datagridview,C#,Linq To Sql,Datagridview,我希望能够选择在我的DataGridView中显示的列。也就是说,我有一个linq查询,它返回一个IEnumerable,但我不想显示策略的所有属性——我想让用户选择要显示的内容。因此,我认为类似这样的方法可以创建一个“更窄”的对象,其中只包含我想要的列 IEnumerable<Policy> policies = repository.GetPolicies(); var results = from p in policies select new { if (userP
IEnumerable<Policy> policies = repository.GetPolicies();
var results = from p in policies select new {
if (userPicked("PropertyOne")) PropertyOne = p.PropertyOne,
if (userPicked("PropertyTwo")) PropertyTwo = p.PropertyTwo,
...
};
dataGridView1.DataSource = results;
IEnumerable policies=repository.GetPolicies();
var结果=从政策中的p选择新{
如果(userPicked(“PropertyOne”))PropertyOne=p.PropertyOne,
如果(userPicked(“PropertyTwo”))PropertyTwo=p.PropertyTwo,
...
};
dataGridView1.DataSource=结果;
有没有一种优雅的方法可以做到这一点
第2部分:
为什么这样做有效:
IEnumerable<Policy> policies = repository.GetPolicies();
dataGridView1.DataSource = policies;
IEnumerable policies=repository.GetPolicies();
dataGridView1.DataSource=策略;
但这并不是:
IEnumerable<Policy> policies = repository.GetPolicies();
var results = from p in policies select p;
dataGridView1.DataSource = results;
IEnumerable policies=repository.GetPolicies();
var结果=从政策中的p选择p;
dataGridView1.DataSource=结果;
在第二种情况下,网格中不显示任何内容。如果需要动态选择字段,请使用。它包含一个接受字段字符串的Select
扩展方法,因此您可以决定在运行时选择哪些字段:
public static IQueryable Select(this IQueryable source,
string selector, params object[] values);
用法示例:
var products = db.Products
.Where(condition)
.OrderBy("Name")
.Select(" new (ItemId,Name,Model,onsale)");
第2部分:网格需要一个可绑定的接口,例如IList
,但是第二个代码示例返回一个IQueryable
。您可以通过调用ToList()
将其转换为IList
如果需要动态选择字段,请使用。它包含一个接受字段字符串的Select
扩展方法,因此您可以决定在运行时选择哪些字段:
public static IQueryable Select(this IQueryable source,
string selector, params object[] values);
用法示例:
var products = db.Products
.Where(condition)
.OrderBy("Name")
.Select(" new (ItemId,Name,Model,onsale)");
第2部分:网格需要一个可绑定的接口,例如IList
,但是第二个代码示例返回一个IQueryable
。您可以通过调用ToList()
将其转换为IList