c# - 如何使用 LINQ to DataSet 筛选集合

标签 c# linq dataset linq-to-dataset

我正在使用一个 DataSet,其中包含两个表,我试图通过 LINQ 从中获取数据。

我正在努力弄清楚如何返回满足条件的记录的语法。

示例:

这是两个表:

FooBar Items

FooBar Data

此查询连接两个表(项目 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"]                 
      };
}

这是从上述查询派生的集合。

FooBar Items joined with FooBar Data

问题:如何仅退回 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/

相关文章:

C# "Boxing"通过赋值进入属性/1-Arg 构造函数

c# - Entity Framework Core Linq 查询以过滤相关实体

c# - 插入时违反 PRIMARY KEY 约束

java - RDF 与其他数据集互连

python - 获得可视化/分析大型数据集的基本技能

c# - 对 ISet 集合的 Linq 查询

c# - 什么是 .NET 托管模块?

c# - 正则表达式强制和可选组

c# - 如何验证所有字典 KVP 是否包含在列表中的某些其他字典中

javascript - 在 elm.dataset 上使用 Object.defineProperty,但属性仍然可以更改