我需要为一些视图填充下拉列表。我将使用相同的下拉列表编写一个Html Helper方法来生成下拉列表的内容。
public static List<SelectListItem> GetBatchNumbers(this HtmlHelper html)
{
List<SelectListItem> items = new List<SelectListItem>();
ModelContainer ctn = new ModelContainer();
var batchNumbers = ctn.SearchResults.OrderBy(x => x.BatchID).ToList();
foreach (var batch in batchNumbers.Distinct())
{
items.Add(new SelectListItem()
{
Text = batch.BatchID + "-" + batch.WebsiteName + "-" + batch.SourceName,
Value = batch.BatchID
});
}
return items;
}
因此,在我的测试数据中,我已经执行了3批搜索结果。所以我想在下拉列表中看到3个批号。但是,我看到SearchResults表中的每个条目都重复了一个批号,因此Distinct()子句似乎没有以所需的方式工作。
我读过Distinct()对象很棘手,有没有人知道我怎么能以另一种方式实现呢?
答案 0 :(得分:7)
有一些实现,如IEnumerable<obj>.DistinctBy(o => o.Prop)
,它们将支持由特殊属性区分。
以下也适用
list.GroupBy(l => l.Property).Select(group => group.First())