学习来源:C# List<T>去重的三种方法 - 微笑代表淡定.Net - 博客园
最近再写一个EF语句:一个商品对应两个型号,两个型号不同规格和价格,查询条件有:标签,价格,风格
List<DataRe> CommodityList = (from ShopInfoCommodityRelation in db.e_ShopInfoCommodityRelation
join Commodity in db.e_Commodity on ShopInfoCommodityRelation.CommodityId equals Commodity.CommodityId
join Property in db.e_Property on Commodity.CommodityId equals Property.CommodityID
where ShopInfoCommodityRelation.IsAction.Equals(1)
&& Commodity.IsDelete.Equals(0)
&& ShopInfoCommodityRelation.ShopInfoId.Equals(gid)
&& (Commodity.StyleModelId == model.StyleModel || model.StyleModel == -2)//风格
&& (db.e_LableComTypeRelation.Where(a => a.LableID == model.LableId).Select(a => a.CommodityType).Any(a => a == Commodity.CommodityTypeItemId))//标签
&& (Property.RetailPrice > model.MinPrice && Property.RetailPrice <= model.MaxPrice)
select new DataRe
{
RId=ShopInfoCommodityRelation.RId,
VersionCode= ShopInfoCommodityRelation.VersionCode,
CommodityId= Commodity.CommodityId,
CommodityName= Commodity.CommodityName,
CommodityContext= Commodity.CommodityContext,
CommodityTypeId= Commodity.CommodityTypeId,
CommodityTypeItemId=Commodity.CommodityTypeItemId,
CommodityFrom=Commodity.CommodityFrom,
Material=Commodity.Material,
CommodityBrand=Commodity.CommodityBrand,
StyleModelId=Commodity.StyleModelId,
Index=Commodity.Index,
PropertyList = db.e_Property.Where(a => a.CommodityID.Equals(Commodity.CommodityId)).OrderBy(a => a.CommodityModel).ToList()
}).ToList();
List<DataRe> list = CommodityList.Where((x, i) => CommodityList.FindIndex(z => z.CommodityId == x.CommodityId) == i).ToList();//去重