C# 从LINQ到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

我在LINQ到SQL方面有点弱,所以我将尝试解释我的问题

我有一个方法如下(简化以更好地解释):

我想修改上面的LINQ to SQL查询,以便填充此属性

请注意,我不想再调用数据库

另外,
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);
}