2

私は以下classlinqクエリを持っていますgrid

これTitleは、返されるすべての行で同じです。私がやろうとしているのは、クエリからのデータを入力mStringして、distinct Title別のテキストブロックにバインドできるようにすることです。

おそらくすべてのコードを表示する必要はありませんでしたが、役立つかもしれません。を表示するにはどうすればよいですかdistinct Title

public class Items
{
    public int Id { get; set; }
    public string Details { get; set; }
    public string Title { get; set; }
    public int NewNumber { get; set; }
}

private ObservableCollection<Items>  mItem = new ObservableCollection<Items>();
private string mString = string.Empty;

public string SpecTitle
{
    get { return mString; }
}

public ObservableCollection<Items> GetItems
{
    get { return mItem; }
}

これがlinqクエリです

var results = (from z in mContext.View
               orderby z.ItemNumber ascending
               where z.ItemId == mId
               select new Items()
               {                                         
                   Id = z.ItemId,
                   Details = z.Details,
                   Title = z.ItemTitle,
                   NewNumber = z.ItemNumber
               });

List<Items> mNewItems = results.ToList();
mItem.Clear();
mNewItems.ForEach(y => mItem.Add(y));
4

4 に答える 4

5
var titleList = mNewItems.Select(i => i.Title).Distinct().ToList();
于 2013-05-15T18:30:32.117 に答える
5

私のコメントを回答に変換する:

ちょうどするItems.Select(x => x.Title).Distinct();

于 2013-05-15T18:31:53.000 に答える
3

moreLinq https://code.google.com/p/morelinq/指定されたキーに基づいて区別できる拡張機能が含まれているという追加のライブラリがあります。

それはこれと同じくらい簡単です

   var results = (from z in mContext.View
                                 orderby z.ItemNumber ascending
                                 where z.ItemId == mId
                                 select new Items()
                                 {                                         
                                     Id = z.ItemId,
                                     Details = z.Details,
                                     Title = z.ItemTitle,
                                     NewNumber = z.ItemNumber

                                 }).DistinctBy(c=>c.Title).ToList();
于 2013-05-15T18:31:33.590 に答える