【发布时间】:2014-10-27 03:24:19
【问题描述】:
我正在尝试查询数据库并连接两个表。我从来没有以这种方式使用过 Join(),并且在第二个 Join() 上出现错误:
var adjustments = data.Inventory_ARCHIVEs
.Where(i => i.Location == comboBox3.Text &&
upcCodes.Contains(i.UPCCode) &&
(i.AVtime.Value.Date >= dateTimePicker1.Value.Date &&
i.AVtime.Value.Date <= dateTimePicker1.Value.AddDays(1).Date) &&
(i.BVtime.Value.Date >= dateTimePicker1.Value.Date &&
i.BVtime.Value.Date <= dateTimePicker1.Value.AddDays(1).Date))
.GroupBy(i => new { i.UPCCode })
.Select(i => new
{
ID = i.Max(x => x.ID),
i.Key.UPCCode
})
.Join(data.Inventory_ARCHIVEs, a => a.ID,
b => b.ID, (a, b) => new { a, b })
.Join(data.BQItems, x => new { x.a.UPCCode, x.b.Location },
y => new { y.UPC_Code, y.Location }, (x, y) => new
{
ID = x.a.ID,
UPCCode = x.a.UPCCode,
Date = x.b.BVtime.Value.Date,
Description = y.Description,
BVamount = x.b.BVamount,
AVamount = x.b.AVamount,
Difference = x.b.AVamount - x.b.BVamount,
AverageCost = x.b.AverageCost,
ExtCost = (x.b.AVamount - x.b.BVamount) * x.b.AverageCost
});
x.a.UPCCode、x.b.Location、y.UPC_Code 和y.Location 是字符串。
这是错误:
方法 'System.Linq.Enumerable.Join
的类型参数 (System.Collections.Generic.IEnumerable , System.Collections.Generic.IEnumerable , System. Func , System.Func , System.Func )' 无法从用法中推断出来。尝试明确指定类型参数。
如果我不包括“位置”列的连接而只使用“UPCCode”,它可以工作,但是当我按列添加第二个连接时,我收到错误
【问题讨论】:
-
多列join的关键点是:列类型必须相同,并且 列名也必须相同。