0

いくつかのビューのドロップダウン リストを作成する必要があります。同じドロップダウンを使用して、ドロップダウンのコンテンツを生成する Html ヘルパー メソッドを作成しました。

    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)特別なプロパティによる区別をサポートするような実装がいくつかあります。

以下も動作します

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