C# LINQ到SQL:属性的可重用表达式?
请原谅我不能把标题说得更准确些 基本上,我有三个LINQ对象链接到表。一个是产品,另一个是公司,最后一个是映射表映射,用于存储公司销售的产品以及该公司引用该产品的ID 我现在检索的产品列表如下:C# LINQ到SQL:属性的可重用表达式?,c#,linq,linq-to-sql,delegates,expression,C#,Linq,Linq To Sql,Delegates,Expression,请原谅我不能把标题说得更准确些 基本上,我有三个LINQ对象链接到表。一个是产品,另一个是公司,最后一个是映射表映射,用于存储公司销售的产品以及该公司引用该产品的ID 我现在检索的产品列表如下: var options = new DataLoadOptions(); options.LoadWith<Product>(p => p.Mappings); context.LoadOptions = options; var products = ( from p in
var options = new DataLoadOptions();
options.LoadWith<Product>(p => p.Mappings);
context.LoadOptions = options;
var products = (
from p in context.Products
select new {
ProductID = p.ProductID,
//BackendProductID = p.BackendProductID,
BackendProductID = (p.Mappings.Count == 0)
? "None"
: (p.Mappings.Count > 1)
? "Multiple"
: p.Mappings.First().BackendProductID,
Description = p.Description
}
).ToList();
列表仍然是一样的,但它现在对每个产品进行查询,以获取其BackendProductID。代码更整洁,可重用,但现在的性能很糟糕
我需要的是某种表达或授权,但我无法动脑去写。它总是以查询每一个产品而告终
任何帮助都将不胜感激 我无法给您提供比您更好的解决方案,但作为一种解决方法 也许您可以在数据库中创建一个视图,您可以像处理表一样将视图拖到设计器中。用户可以从视图中读取数据。我认为这将提高性能
祝你好运。我不能给你一个比你更好的解决方案,但作为一种解决办法 也许您可以在数据库中创建一个视图,您可以像处理表一样将视图拖到设计器中。用户可以从视图中读取数据。我认为这将提高性能 祝你好运
public string BackendProductID
{
get
{
if (Mappings.Count == 0) return "None";
if (Mappings.Count > 1) return "Multiple";
return Mappings.First().BackendProductID;
}
}