从 LINQ 获取另一个 class 到 SQL 查询
Get another class from LINQ to SQL query
我在 LINQ to SQL 方面有点弱所以会尝试解释我的问题。
我有一个方法如下(为了更好地解释它而简化):
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
select p
).ToList();
return products;
}
ic_ProductData
和 ic_ProductDefs
是我数据库中的表
ic_ProductData
class 包含手动创建的 属性 为:
public ic_ProductDef RelatedProductDef { get; set; }
我想修改上面的 LINQ to SQL 查询,以便我可以填充此 属性。
请注意我不想再次调用数据库。
ic_ProductData
中还有很多属性,所以我想避免映射每个 属性
结果如下(显然下面是错误的):
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);
}
基本上,您首先需要对数据库进行一次查询,此 returns 一个包含您的产品及其 Def 的匿名类型。
最后,你循环(在内存中,没有数据库调用!)这些,创建你的最终对象,并填充它们的 RelatedProductDef
属性。
我在 LINQ to SQL 方面有点弱所以会尝试解释我的问题。
我有一个方法如下(为了更好地解释它而简化):
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
select p
).ToList();
return products;
}
ic_ProductData
和 ic_ProductDefs
是我数据库中的表
ic_ProductData
class 包含手动创建的 属性 为:
public ic_ProductDef RelatedProductDef { get; set; }
我想修改上面的 LINQ to SQL 查询,以便我可以填充此 属性。
请注意我不想再次调用数据库。
ic_ProductData
中还有很多属性,所以我想避免映射每个 属性
结果如下(显然下面是错误的):
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);
}
基本上,您首先需要对数据库进行一次查询,此 returns 一个包含您的产品及其 Def 的匿名类型。
最后,你循环(在内存中,没有数据库调用!)这些,创建你的最终对象,并填充它们的 RelatedProductDef
属性。