连接其他三个查询结果的linq查询

连接其他三个查询结果的linq查询,linq,Linq,我正在尝试连接来自三个linq查询的结果。类型如下: orderItems是一个列表 transitTimes是一个字典,其中Key=SiteId和Value=TransitDays shippingPriority是一个字典,其中Key=DefaultPriority和Value=SiteId public class OrderLineItem { public decimal OrderLineWorkId { get; set; } public string Sku {

我正在尝试连接来自三个linq查询的结果。类型如下:

orderItems
是一个
列表

transitTimes
是一个
字典
,其中
Key=SiteId
Value=TransitDays

shippingPriority
是一个
字典,其中
Key=DefaultPriority
Value=SiteId

public class OrderLineItem
{
    public decimal OrderLineWorkId { get; set; }
    public string Sku { get; set; }
    public string SiteId { get; set; }
    public char FlagSlapType { get; set; }
    public char FlagTruck { get; set; }
    public string SkuType { get; set; }
    public int QtyOrdered { get; set; }
    public int QtySellable { get; set; }
}

public class OrderAllocation
{
    public int SiteId { get; set; }
    public int TransitDays { get; set; }
    public int QtyItemsInStock { get; set; }
    public int QtyParcelInStock { get; set; }
    public int DefaultPriority { get; set; }
}
这是我的linq查询,但它总是返回0个结果。不知道我哪里出错了

var results =  (from i in orderItems
                join t in transitTimes on i.SiteId equals t.Key.ToString()
                join d in shippingPriority on t.Key equals d.Value
                group i by i.SiteId into g
                select new OrderAllocation()
                {
                    SiteId = Convert.ToInt32(g.Key),
                    TransitDays = transitTimes.Select(x => x.Value).FirstOrDefault(),
                    QtyItemsInStock = g.Count(e => e.QtySellable >= e.QtyOrdered),
                    QtyParcelInStock = g.Count(e => e.QtySellable >= e.QtyOrdered && e.FlagSlapType != 'Y'),
                    DefaultPriority = defaultShippingPriority.Select(x => x.Key).FirstOrDefault()
                }).OrderBy(x => x.SiteId).ToList();
更新


我发现了问题所在,类型为
string
SiteId
的值带有前缀
0
(即
01
02
,等等),因此不会与
1
2
等值合并。将类型从
string
更改为
int
,现在正在获取结果。很抱歉出现错误警报。

此问题可能与数据类型的差异有关:

      (from i in orderItems
        join t in transitTimes on i.SiteId equals t.Key.ToString()
orderItems将SiteId定义为字符串

public string SiteId { get; set; }
而transitTimes的键为int

 Dictionary<int,int>
字典
intstring的连接条件可能无法提供预期的结果