.Distinct()子句不能正常工作c#MVC

109*_*793 0 c# linq asp.net-mvc distinct

我需要为一些视图填充下拉列表.我将使用相同的下拉列表编写一个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;
    }
Run Code Online (Sandbox Code Playgroud)

所以在我的测试数据中,我已经执行了3批搜索结果.所以我想在下拉列表中看到3个批号.但是,我看到SearchResults表中的每个条目都重复了一个批号,因此Distinct()子句似乎没有以所需的方式工作.

我已经读过Distinct()对象很棘手,有谁知道我怎么能用另一种方式实现呢?

TGl*_*zer 7

有一些实现IEnumerable<obj>.DistinctBy(o => o.Prop)会支持由特殊属性区分.

以下也有效

list.GroupBy(l => l.Property).Select(group => group.First())
Run Code Online (Sandbox Code Playgroud)