我有两个表,如下所示。
表格1
╔══════════════╦═════╦════╗
║ NAME ║ AGE ║ ID ║
╠══════════════╬═════╬════╣
║ firstname 1 ║ 20 ║ 1 ║
║ firstname 2 ║ 21 ║ 2 ║
║ firstname 3 ║ 22 ║ 3 ║
║ firstname 4 ║ 23 ║ 4 ║
║ firstname 5 ║ 24 ║ 5 ║
║ firstname 6 ║ 25 ║ 6 ║
║ firstname 7 ║ 26 ║ 7 ║
║ firstname 8 ║ 27 ║ 8 ║
║ firstname 9 ║ 28 ║ 9 ║
║ firstname 10 ║ 29 ║ 10 ║
╚══════════════╩═════╩════╝
表 2
╔════════╦══════════╗
║ LINKID ║ QUANTITY ║
╠════════╬══════════╣
║ 1 ║ 1 ║
║ 1 ║ 1 ║
║ 2 ║ 1 ║
║ 2 ║ 1 ║
║ 2 ║ 1 ║
║ 3 ║ 1 ║
║ 3 ║ 1 ║
║ 3 ║ 1 ║
║ 3 ║ 1 ║
║ 4 ║ 1 ║
║ 4 ║ 1 ║
║ 4 ║ 1 ║
║ 4 ║ 1 ║
║ 4 ║ 1 ║
║ 5 ║ 1 ║
║ 5 ║ 1 ║
║ 5 ║ 1 ║
║ 5 ║ 1 ║
║ 5 ║ 1 ║
║ 5 ║ 1 ║
║ 6 ║ 1 ║
║ 6 ║ 1 ║
║ 6 ║ 1 ║
║ 6 ║ 1 ║
║ 6 ║ 1 ║
║ 6 ║ 1 ║
║ 6 ║ 1 ║
║ 7 ║ 1 ║
║ 7 ║ 1 ║
║ 7 ║ 1 ║
║ 7 ║ 1 ║
║ 7 ║ 1 ║
║ 7 ║ 1 ║
║ 7 ║ 1 ║
║ 7 ║ 1 ║
║ 8 ║ 1 ║
║ 8 ║ 1 ║
║ 8 ║ 1 ║
║ 8 ║ 1 ║
║ 8 ║ 1 ║
║ 8 ║ 1 ║
║ 8 ║ 1 ║
║ 8 ║ 1 ║
║ 8 ║ 1 ║
║ 9 ║ 1 ║
║ 9 ║ 1 ║
║ 9 ║ 1 ║
║ 9 ║ 1 ║
║ 9 ║ 1 ║
║ 9 ║ 1 ║
║ 9 ║ 1 ║
║ 9 ║ 1 ║
║ 9 ║ 1 ║
║ 9 ║ 1 ║
║ 10 ║ 1 ║
║ 10 ║ 1 ║
║ 10 ║ 1 ║
║ 10 ║ 1 ║
║ 10 ║ 1 ║
║ 10 ║ 1 ║
║ 10 ║ 1 ║
║ 10 ║ 1 ║
║ 10 ║ 1 ║
║ 10 ║ 1 ║
║ 10 ║ 1 ║
╚════════╩══════════╝
结果表如下所示。
╔══════════════╦═════╦════╦═════╗
║ NAME ║ AGE ║ ID ║ QTY ║
╠══════════════╬═════╬════╬═════╣
║ firstname 1 ║ 20 ║ 1 ║ 2 ║
║ firstname 2 ║ 21 ║ 2 ║ 3 ║
║ firstname 3 ║ 22 ║ 3 ║ 4 ║
║ firstname 4 ║ 23 ║ 4 ║ 5 ║
║ firstname 5 ║ 24 ║ 5 ║ 6 ║
║ firstname 6 ║ 25 ║ 6 ║ 7 ║
║ firstname 7 ║ 26 ║ 7 ║ 8 ║
║ firstname 8 ║ 27 ║ 8 ║ 9 ║
║ firstname 9 ║ 28 ║ 9 ║ 10 ║
║ firstname 10 ║ 29 ║ 10 ║ 11 ║
╚══════════════╩═════╩════╩═════╝
我希望在 1 个 linq 语句内完成此操作。(如果完全不可能,2 个陈述)
到目前为止,我已经完成了我的声明。
var resultQuery = from a in dtbl1.AsEnumerable()
join b in dtbl2.AsEnumerable()
on a.Field<int>("ID") equals b.Field<int>("LinkID")
select new
{
ID = a["ID"],
Name = a["Name"],
Age = a["Age"],
Qty = b["Quantity"]
}
;
该语句将结合 2 个表,但我不知道如何继续计算数量。
任何的想法?
如果我必须使用第二个查询,它已经完成。
var secondResultQuery = from row in resultQuery
group row by new { row.ID, row.Name, row.Age } into g
select new
{
g.Key.ID,
g.Key.Name,
g.Key.Age,
totalCount = g.Sum(count => (int)count.Qty)
};