如何使用 linq 联接 2 个表,但避免匿名对象
本文关键字:对象 linq 何使用 联接 个表 | 更新日期: 2023-09-27 18:32:26
我想使用 linq 连接 2 个表并避免匿名对象。
到目前为止,我使用元组。
var products = from tm in db.TargetMarkets
join tp in db.Products on tm.product_id equals tp.id
where tm.country == 2
select Tuple.Create<TargetMarket, Product>(tm, tp);
但是,当我为每个人
foreach (var p in products)
{
var a = p.Item1.id;
}
它引发异常
LINQ to Entities 无法识别方法"System.Tuple"2
问题:
- 有没有办法让我的代码保持强类型
- 元组有什么问题(可选)
有没有办法让我的代码保持强类型
您可以定义一个新类型并创建该类型的对象,而不是匿名对象。
class ProductTargetMarket
{
//Attributes
}
var ProductsTargetMarkets = from tm in db.TargetMarkets
join tp in db.Products on tm.product_id equals tp.id
where tm.country == 2
select new ProductTargetMarket{Attribute1OfProductTargetMarket = tp.Attribute1, Attribute1OfProductTargetMarket = tm.Attribute1 };
要创建一个元组,您可以先将其转换为匿名类型,然后将其转换为元组,请参阅此帖子和此帖子。