我有一个数据表,我将返回到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();
答案 0 :(得分:0)
你可以制作一个人工分组键:
.GroupBy(
r => new { pp1 = f.Field<string>("FieldOne") == null ? -1 : r.Field<int>("FirstId") })
在这里,我使用-1
作为黑客来创建一个单独的组。确保此int值未被使用。你也可以精确地解决这个问题,但希望这没关系。