0

我需要为多个视图填充下拉列表。相同的下拉菜单将用于我编写了一个 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() 对对象很棘手,有谁知道我如何以另一种方式实现这一目标?

4

1 回答 1

7

有一些实现,例如IEnumerable<obj>.DistinctBy(o => o.Prop)通过特殊属性支持 distinct。

以下也有效

list.GroupBy(l => l.Property).Select(group => group.First())
于 2013-04-25T10:14:28.397 回答