Linq 和 list集合 去除重複項
方法一:
IQueryable<NewsContents專案> listNotice = null;
listNotice = (from news in base.CabinData.NewsContents where news.FLAG == 1 select news).Distinct();
此種去除方法弊端:只要物件中有重複的欄位都會去除,會比對物件中所有的欄位。
方法二:
把linq查詢結果轉成list物件集合,再過濾去除重複項
List<NewsContents專案> list = new List<NewsContents專案>(); // NewsContents專案 為實體類model
list = (from news in base.CabinData.NewsContents where news.FLAG == 1 select news).Distinct();
List<NewsContents專案> listNotice = list.Distinct(new item_collection_DistinctBy_item1()).ToList();
//去除重複項
public class item_collection_DistinctBy_item1 : IEqualityComparer<Entity.NewsContents專案>
{
bool IEqualityComparer<Entity.NewsContents專案>.Equals(Entity.NewsContents專案 x, Entity.NewsContents專案 y)
{
if (x.Id == y.Id)
{
return true;
}
else
{
return false;
}
}
int IEqualityComparer<Entity.NewsContents專案>.GetHashCode(Entity.NewsContents專案 obj)
{
return 0;
}
}
=================================================
|