C# 我怎样才能在Linq实现这一点?

C# 我怎样才能在Linq实现这一点?,c#,linq,C#,Linq,我有一种感觉,以下可能是一种暴行,也许这就是它不起作用的原因。 所以我来了,请求你的帮助。:-) 也请帮我编辑这个问题。我不知道什么是合适的标题,或者更好的表述方式。(你可能已经猜到了,英语不是我的母语) 考虑这样一个类: public class Order { public int FareCode; public int Quantity; } 然后是一个Linq查询,如: var orders = new []{ new Order {...}, ...}; var fareC

我有一种感觉,以下可能是一种暴行,也许这就是它不起作用的原因。 所以我来了,请求你的帮助。:-)

也请帮我编辑这个问题。我不知道什么是合适的标题,或者更好的表述方式。(你可能已经猜到了,英语不是我的母语)

考虑这样一个类:

public class Order
{
  public int FareCode;
  public int Quantity;
}
然后是一个Linq查询,如:

var orders = new []{ new Order {...}, ...};
var fareCodes = orders.Select(o => o.FareCode).ToArray();
using(var dc = new datacontext())
{
  var query = dc.Fares
              .Where(f => fareCodes.Contains(f.FareCode))
              .Select(f => new {
                Fare = f,
                Quantity = orders.Single(o => o.FareCode == f.FareCode).Quantity //<-- This is not right!
              })
}
var orders=new[]{new Order{…},…};
var fareCodes=orders.Select(o=>o.FareCode.ToArray();
使用(var dc=new datacontext())
{
var query=dc.票价
.其中(f=>fareCodes.包含(f.FareCode))
.选择(f=>new{
票价=f,
数量=订单。单个(o=>o.FareCode==f.FareCode)。数量//o.FareCode==f.FareCode)。数量
ins不正确。那么实现这一点的另一个选项是什么


更新:它不起作用的原因是运行时引发此异常:除了Contains()运算符之外,查询运算符的LINQ to SQL实现中不能使用本地序列根据您的上一条评论,请尝试以下解决方案:

var query = Fares
        .Where(f => fareCodes.Contains(f.FareCode)).ToList()
        .Select(f => new
                         {
                             Fare = f,
                             Quantity = Orders.Single(o => o.FareCode == f.FareCode).Quantity
                         });

根据您最后的评论,尝试以下解决方案:

var query = Fares
        .Where(f => fareCodes.Contains(f.FareCode)).ToList()
        .Select(f => new
                         {
                             Fare = f,
                             Quantity = Orders.Single(o => o.FareCode == f.FareCode).Quantity
                         });

因此,对于每个
订单
,您希望将
票价代码
更改为关联的
票价
,并对每个
票价
的数量求和,而不必为每个
订单
点击数据上下文

我会在
Orders
列表中使用GroupBy/ToDictionary组合,在
Fares
列表中使用
ToDictionary()

// generates a dictionary of fare codes and total quantity of orders per fare code
var fareQuantities = Orders.GroupBy(o => o.FareCode).ToDictionary(og => og.Key, og => og.Sum(o => o.Quantity));

using(var dc = new datacontext())
{
    var query = dc.Fares
        .Where(f => fareQuantities.Keys.Contains(f.FareCode))
        .ToDictionary(f => f, f => fareQuantities[f.FareCode]);
    // query is now a dictionary of fares and the total quantities of each fare ordered
}

希望这会有所帮助。

因此,对于每个
订单来说,您希望将
票价代码
更改为相关的
票价
,并对每个
票价
的数量进行合计,而不必为每个
订单点击数据上下文

我会在
Orders
列表中使用GroupBy/ToDictionary组合,在
Fares
列表中使用
ToDictionary()

// generates a dictionary of fare codes and total quantity of orders per fare code
var fareQuantities = Orders.GroupBy(o => o.FareCode).ToDictionary(og => og.Key, og => og.Sum(o => o.Quantity));

using(var dc = new datacontext())
{
    var query = dc.Fares
        .Where(f => fareQuantities.Keys.Contains(f.FareCode))
        .ToDictionary(f => f, f => fareQuantities[f.FareCode]);
    // query is now a dictionary of fares and the total quantities of each fare ordered
}

希望这能有所帮助。

你想得到什么作为最终结果?为什么“这不对”?这会引发异常吗?你想从数据源更新数量属性值吗?我想用相应的数量获取票价实体。我想用特定的票价建立服务订单(西班牙语中的Tarifas)最终结果是什么?为什么“这不对”?是否引发异常?是否尝试从数据源更新Quantity属性值?我尝试获取具有相应数量的票价实体。我尝试构建具有特定票价的服务订单(西班牙语中的Tarifas)