1.添加一个扩展方法
public static class DistinctByClass
{
public static IEnumerable<TSource> DistinctBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
{
HashSet<TKey> seenKeys = new HashSet<TKey>();
foreach (TSource element in source)
{
if (seenKeys.Add(keySelector(element)))
{
yield return element;
}
}
}
}
2.使用方法如下(针对ID,和Name进行Distinct)
var query = people.DistinctBy(p => new { p.Id, p.Name });
3.若仅仅针对ID进行distinct
var query = people.DistinctBy(p => p.Id);
例如:
var q = (from f in db.FW_Cultivate
join p in db.Sys_Product on f.ProdID equals p.ProdID
select new
{
f.ProdID,
f.EntID,
f.DisID,
p.ProdName
})
.WhereIf(filter.EntID > 0, t => t.EntID == filter.EntID)
.WhereIf(filter.DisID > 0, t => t.DisID == filter.DisID).DistinctBy(t=>t.ProdName);