繁体   English   中英

C#LINQ AsEnumerable Groupby在哪里

[英]c# LINQ AsEnumerable Groupby Where

我有一个要返回到UI层的数据表。

我有多个具有相同FirstId值的表。 在FieldOne中,可能会有一些值。 我只想将FieldOne为null的记录分组。

我用.Where和.Groupby尝试了以下LINQ语句,但是.Where删除了FieldOne中具有值的所有记录,然后执行GroupBy。 在UI网格中,缺少具有FieldOne值的记录。 我只想将记录与空的FieldOne值组合在一起,而仍然保留具有FieldOne值的记录。 谢谢。

MyDataAsEnumerable()
    .Where(f => f.Field<string>("FieldOne") == null)
    .GroupBy(r => new { pp1 = r.Field<int>("FirstId") })
    .Select(g => g.First())
    .CopyToDataTable();

您可以创建一个人工分组密钥:

.GroupBy(
  r => new { pp1 = f.Field<string>("FieldOne") == null ? -1 : r.Field<int>("FirstId") })

在这里,我使用-1作为技巧来创建一个单独的组。 确保未使用此int值。 您也可以精确解决此问题,但希望可以。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM