Linq选择两个不同类型的列

时间:2015-12-10 17:19:21

标签: c# linq

我有以下Linq查询:

var dis = productsWhole
          .SelectMany(p => p.CustomerPricing).ToList();

这允许foreach访问productsWhole.CustomerPricing List中的每个项目。

productsWhole ienumerable还包含一个String字段ProductCode是否有一种方法可以在不使用select new匿名类型的情况下将两者结合起来?

2 个答案:

答案 0 :(得分:1)

如果它是你关注的匿名类型部分(我假设你想从一个方法或类似的东西中返回它),要么投射到一个已知类型(例如Tuple作为测试建议)或者预先定义的类型(例如您自己的结构或类),例如:

internal class ProductProjection
{
  internal CustomerPricing CustomerPricing { get; set; }
  internal string ProductCode { get; set; }
}

然后做:

var dis = productsWhole
          .SelectMany(p => new ProductProjection { CustomerPricing = p.CustomerPricing, ProductCode = p.ProductCode }).ToList();

dis将成为List<ProductProjection>

答案 1 :(得分:1)

投标到Tuple的正确方法是@test建议使用支持其他resultSelector的{​​{3}}

var dis = productsWhole
    .SelectMany(p => p.CustomerPricing, (p, cp) => Tuple.Create(p.ProductCode, cp))
    .ToList();