需要重构的Linq-To-SQL位于以下位置:
var query = from p in Cache.Model.Products
join sc in Cache.Model.ShishaCombinations on p.ProductID equals sc.ProductID
where sc.NumberOfMixes == mixes
select new { p.ProductID, p.Name };
以下单行:
group by p.ProductID
我知道该组省略了对select子句的任何需要,因此两者可以在同一个LINQ-To-SQL语句中共存,所以有人可以帮我重构上面的内容吗?
帮助我删除结果中的所有重复数据。 < - 这是这个问题的全部内容。基于产品使用的香料数量,产品重复多次。因此,在“ShishaCombinations”表中,对于它使用的每种风味,一个ProductID可以重复多次。我想对从上面的查询返回的结果进行分组,或者在其上调用distinct,因为我不想将产品'n'次添加到我的GUI,因为它在我的结果中出现'n'次。希望这将清除我想要做的任何混乱。
答案 0 :(得分:1)
以下代码就是我所需要的:
var query1 = (from p in Cache.Model.Products
join sc in Cache.Model.ShishaCombinations on p.ProductID equals sc.ProductID
where sc.NumberOfMixes == mixes
select new { p.ProductID, p.Name }).Distinct();
Ufuk,谢谢回答配偶。我知道我的回答很简单lol :))
答案 1 :(得分:0)
您可以在select子句后使用into关键字。您不能只分组,因为您正在投射匿名类型。
var query = from p in Cache.Model.Products
join sc in Cache.Model.ShishaCombinations on p.ProductID equals sc.ProductID
where sc.NumberOfMixes == mixes
select new { p.ProductID, p.Name } into productInfo
group productInfo by productInfo.productId;