C# 从LINQ到SQL查询获取另一个类
我在LINQ到SQL方面有点弱,所以我将尝试解释我的问题 我有一个方法如下(简化以更好地解释): 我想修改上面的LINQ to SQL查询,以便填充此属性 请注意,我不想再调用数据库 另外,C# 从LINQ到SQL查询获取另一个类,c#,linq,linq-to-sql,linq-to-objects,C#,Linq,Linq To Sql,Linq To Objects,我在LINQ到SQL方面有点弱,所以我将尝试解释我的问题 我有一个方法如下(简化以更好地解释): 我想修改上面的LINQ to SQL查询,以便填充此属性 请注意,我不想再调用数据库 另外,ic_ProductData中有很多属性,因此我希望避免映射每个属性 以下内容的影响(显然以下内容是错误的): 公共静态列表GetCompleteSimilarProductsWithApplyButton(InfoChoiceAdminadataContext db) { var产品=(来自 p在db.ic
ic_ProductData
中有很多属性,因此我希望避免映射每个属性
以下内容的影响(显然以下内容是错误的):
公共静态列表GetCompleteSimilarProductsWithApplyButton(InfoChoiceAdminadataContext db)
{
var产品=(来自
p在db.ic_产品数据中
在p.ProductDefId上的db.icu ProductDefs中加入proddef等于proddef.ProductDefId
//想在这里改变吗
选择新ic_ProductData
{
//在这里对p执行一些操作,以便填充新对象的所有属性
//避免在此处映射属性
RelatedProductDef=proddef
}
).ToList();
退货产品;
}
以我有限的知识,我被困在这里
请帮忙
提前谢谢 您可以这样做:
var query = (from p in db.ic_ProductDatas
join proddef in db.ic_ProductDefs on p.ProductDefId equals proddef.ProductDefId
select new
{
ProductData = p,
Def = proddef
}).ToList();
List<ic_ProductData> products = new List<ic_ProductData>();
foreach( var product in query)
{
product.ProductData.RelatedProductDef = product.Def;
products.Add(product);
}
var query=(来自db.ic\u ProductDatas中的p
在p.ProductDefId上的db.icu ProductDefs中加入proddef等于proddef.ProductDefId
选择新的
{
ProductData=p,
Def=proddef
}).ToList();
列表产品=新列表();
foreach(查询中的var产品)
{
product.ProductData.RelatedProductDef=product.Def;
产品。添加(产品);
}
基本上,您首先需要对数据库进行一次查询,这将返回一个匿名类型,其中包含您的产品及其定义。
最后,您对这些对象进行循环(在内存中,没有db调用!),创建最终对象,并填充它们的
RelatedProductDef
属性。.ToList()
,因为该语句返回可在foreach循环中使用的System.Linq.IQueryable
instead@ViRuSTriNiTy确实没有必要,,不过,我发现它(在性能上)的影响很小。@Tom Wuyts这似乎是一个很好的解决方案。我会试一试的!我会很快告诉你这方面的最新情况。请投我一票。
public ic_ProductDef RelatedProductDef { get; set; }
public static List<ic_ProductData> GetCompleteSimilarProductsWithApplyButton(InfoChoiceAdminDataContext db)
{
var products = (from
p in db.ic_ProductDatas
join proddef in db.ic_ProductDefs on p.ProductDefId equals proddef.ProductDefId
//trying to change here
select new ic_ProductData
{
//do something with p here so that all the properties of new object gets filled
// avoid mapping of properties here
RelatedProductDef = proddef
}
).ToList();
return products;
}
var query = (from p in db.ic_ProductDatas
join proddef in db.ic_ProductDefs on p.ProductDefId equals proddef.ProductDefId
select new
{
ProductData = p,
Def = proddef
}).ToList();
List<ic_ProductData> products = new List<ic_ProductData>();
foreach( var product in query)
{
product.ProductData.RelatedProductDef = product.Def;
products.Add(product);
}