连接其他三个查询结果的linq查询
我正在尝试连接来自三个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 {
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>
字典
int到string的连接条件可能无法提供预期的结果