Linq在C#Lambda Expression中使用Distinct()

时间:2013-08-22 06:36:53

标签: c# linq lambda

SFC.OrderFormModifiedMonitoringRecords
   .SelectMany(q => q.TimeModify, w => w.DateModify)
   .Distinct()
   .OrderBy(t => t)
   .SelectMany(t => new { RowID = t.rowID, OFnum = t.OFNo });

错误是我错过了什么,还是完全编码了错误的方法?在此之后,我将使用 Foreach 方法来收集多个数据而不重复。

1 个答案:

答案 0 :(得分:4)

您传递给SelectMany的代理人必须返回IEnumerable,并将多个集合合并为一个。所以是的,这里肯定是错的。我认为你把它与Select混淆了,它只是将一个集合映射到另一个集合。

在不知道你的目标是什么的情况下,很难确切知道如何修复它,但我猜你想要这样的东西:

SFC.OrderFormModifiedMonitoringRecords
   .OrderBy(t => t.DateModify)
   .ThenBy(t => t.TimeModify)
   .Select(t => new { RowID = t.rowID, OFnum = t.OFNo })
   .Distinct();

或者在查询语法中:

(from t in SFC.OrderFormModifiedMonitoringRecords
 orderby t.DateModify, t.TimeModify
 select new { RowID = t.rowID, OFnum = t.OFNo })
.Distinct();

这将按DateModify然后按TimeModify订购记录,选择两个属性rowIDOFNo,并仅返回不同的值对。