[英]Distinct Value from Linq Query
我有以下class
和linq
查詢我用來填充grid
!
返回的每一行的Title
都是相同的。 我想要做的是使用查詢中的distinct
Title
填充mString
,以便將其綁定到單獨的文本塊。
我可能不需要顯示所有代碼,但也許它會有所幫助。 如何顯示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));
將我的評論轉換為答案:
只需做Items.Select(x => x.Title).Distinct();
。
var titleList = mNewItems.Select(i => i.Title).Distinct().ToList();
還有一個名為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();
您可以為distinct執行自定義比較器:
public class ItemsComparer : IEqualityComparer<Items>
{
public bool Equals(Items x, Items y)
{
return x.Title == y.Title;
}
public int GetHashCode(Items obj)
{
return obj.Title.GetHashCode();
}
}
然后只是使用
var titleList = mNewItems.Distinct(new ItemsComparer()).Select(t=>t.Items);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.