C# Linq查询建议
我有如下疑问。一个产品可以分配给多个产品,所以在这个linq查询之后,我将得到多个产品。如何更改它,使我只能看到一个产品一次C# Linq查询建议,c#,.net,linq,C#,.net,Linq,我有如下疑问。一个产品可以分配给多个产品,所以在这个linq查询之后,我将得到多个产品。如何更改它,使我只能看到一个产品一次 var list = (from p in Products from cat in p.Product_SubCategory_Mappings let trend = CustomFunction(p.ID) where cat.SubCategory.CategoryId == 19 && trend > 100
var list = (from p in Products from cat in p.Product_SubCategory_Mappings
let trend = CustomFunction(p.ID) where cat.SubCategory.CategoryId == 19 &&
trend > 100 select new { Product = p, p.Vendor, trend}).ToList();
下面是表格结构,如果有帮助的话
在
Product.Product\u SubCategory\u Mappings
上进行子选择时,您将结果集中的行数乘以每个产品的子类别映射数。这意味着产品将被复制
为了避免这种情况,您可以选择子选项而不是子选项
大概是这样的:
var list = (from p in Products
let trend = CustomFunction(p.ID)
let cats = p.Product_SubCategory_Mappings
where trend > 100
&& cats.Any(cat => cat.SubCategory.CategoryId == 19)
select new { Product = p, p.Vendor, trend }
)
.ToList();
在
Product.Product\u SubCategory\u Mappings
上进行子选择时,您将结果集中的行数乘以每个产品的子类别映射数。这意味着产品将被复制
为了避免这种情况,您可以选择子选项而不是子选项
大概是这样的:
var list = (from p in Products
let trend = CustomFunction(p.ID)
let cats = p.Product_SubCategory_Mappings
where trend > 100
&& cats.Any(cat => cat.SubCategory.CategoryId == 19)
select new { Product = p, p.Vendor, trend }
)
.ToList();
这可能是工作
public IQueryable<Product> GetProduct()
{
var list = (from p in Products
from cat in p.Product_SubCategory_Mappings
let trend = CustomFunction(p.ID)
where cat.SubCategory.CategoryId == 19 &&
trend > 100
select new {Product = p, p.Vendor, trend}).Distinct();
return list;
}
public IQueryable GetProduct()
{
var list=(来自产品中的p)
从p.Product_子类别_映射中的cat
让趋势=自定义功能(p.ID)
其中cat.SubCategory.CategoryId==19&&
趋势>100
选择new{Product=p,p.Vendor,trend}).Distinct();
退货清单;
}
这可能是工作
public IQueryable<Product> GetProduct()
{
var list = (from p in Products
from cat in p.Product_SubCategory_Mappings
let trend = CustomFunction(p.ID)
where cat.SubCategory.CategoryId == 19 &&
trend > 100
select new {Product = p, p.Vendor, trend}).Distinct();
return list;
}
public IQueryable GetProduct()
{
var list=(来自产品中的p)
从p.Product_子类别_映射中的cat
让趋势=自定义功能(p.ID)
其中cat.SubCategory.CategoryId==19&&
趋势>100
选择new{Product=p,p.Vendor,trend}).Distinct();
退货清单;
}
您所说的“多个业务”是指“多个供应商”吗?另外,您能给出一些实际的样本输出和所需的样本输出吗?很难说清您在寻找什么(例如,您是否希望根据供应商Id进行查询,以便只输出一个供应商?或者仅按供应商Id分组?)对不起,它的产品不是业务。现在您说的是“一个产品”,更容易说清您在问什么。当我认为你指的是一个供应商时,这很让人困惑,一个企业根本没有任何意义:)你说的“多个企业”是指“多个供应商”吗?另外,您能给出一些实际的样本输出和所需的样本输出吗?很难说清您在寻找什么(例如,您是否希望根据供应商Id进行查询,以便只输出一个供应商?或者仅按供应商Id分组?)对不起,它的产品不是业务。现在您说的是“一个产品”,更容易说清您在问什么。当我以为你指的是一家供应商时,这让人困惑,一家企业根本没有任何意义:)这不起作用。它显示错误cats不包含任何扩展方法的定义。@Sonesh:您必须为扩展方法包含一个using
语句,以便对其进行编译。请参阅:(using System.Linq
)我已经有了using语句,这就是上一个查询在页面上运行正常的原因。@Sonesh:Product\u SubCategory\u映射的类型是什么?如果它是一个IQueryable
或IEnumerable
,它应该可以工作。另外,您是否包含了对System.Core.dll
的引用?检查我在之前的评论中链接的MSDN文档(现在是答案本身)。方法存在-使用方法有问题。Product_SubCategory_Mappings是SQL server中我正在查询的表。这不起作用。它显示错误cats不包含任何扩展方法的定义。@Sonesh:您必须为扩展方法包含一个using
语句,以便对其进行编译。请参阅:(using System.Linq
)我已经有了using语句,这就是上一个查询在页面上运行正常的原因。@Sonesh:Product\u SubCategory\u映射的类型是什么?如果它是一个IQueryable
或IEnumerable
,它应该可以工作。另外,您是否包含了对System.Core.dll
的引用?检查我在之前的评论中链接的MSDN文档(现在是答案本身)。方法存在-它的使用方式有问题。Product_SubCategory_Mappings是SQL server中我正在查询的一个表。