我正在使用一个 DataSet
,其中包含两个表,我试图通过 LINQ 从中获取数据。
我正在努力弄清楚如何返回满足条件的记录的语法。
示例:
这是两个表:
此查询连接两个表(项目 Z 将被过滤掉)
private void ParseFooBar()
{
....
var fooBars = from item in fooBarItems
join data in fooBarData on item["FooBar_Id"] equals data["FooBar_Id"]
where (new[] {"A","B","C"}).Contains(item["id"])
select new
{
id = item["id"],
description = item["description"],
wat = data["wat"],
foo = data["foo"]
};
}
这是从上述查询派生的集合。
问题:如何仅退回 Foo 商品?
请注意 Foo 项在其第一行/记录中如何具有非空值,而 Bar 项在第一行/记录中没有非空值。利用所有 Foo 项在 foo 列中至少有一个非空值并且 Bar 项在 foo 列中永远不会有非空值这一事实,如何更新上述查询以便查询仅返回 Foo 项?同样,如何更新查询以便它只返回 Bar 项目?
最佳答案
我并不完全清楚成为 Foo 与 Bar 的标准是什么,但这里有一些想法:
var foos1 = fooBars.Where(fb => fb.wat != "bar");
var foos2 = fooBars.Where(fb => fb.wat == "foo" || fb.wat == null);
var foos3 = fooBars.Where(fb => fb.wat == "foo" || fb.foo != null);
var bars = fooBars.Where(fb => fb.wat == "bar" || fb.foo != null);
关于c# - 如何使用 LINQ to DataSet 筛选集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9234227/