C# 使用linq组合两个数据表并从第二个表中获取金额
我有两张表,如下所示 表1C# 使用linq组合两个数据表并从第二个表中获取金额,c#,.net,linq,C#,.net,Linq,我有两张表,如下所示 表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
╔══════════════╦═════╦════╗
║ 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"]
}
;
使用数据表的查询
var resultSetTicketNo = from a in dtbl1.AsEnumerable()
join b in dtbl2.AsEnumerable()
on a.Field<int>("ID") equals b.Field<int>("LinkID")
group a by new
{
Age = a["Age"],
ID = a["ID"],
Name = a["Name"]
} into g
select new
{
g.Key.Name,
g.Key.Age,
g.Key.ID,
Counter=g.Count()
};
foreach (var a in resultSetTicketNo)
{
Response.Write(a.ID + "~" + a.Name + "~" + a.Age + "~" + a.Counter + "<br/>");
}
Response.Write("<br/><br/>end of resultSetTicketNo<br/><br/>");
var resultsetitcketno=来自dtbl1.AsEnumerable()中的a
在dtbl2.AsEnumerable()中加入b
a.Field(“ID”)等于b.Field(“LinkID”)
a组由纽约
{
年龄=a[“年龄”],
ID=a[“ID”],
Name=a[“Name”]
}进入g
选择新的
{
g、 键。名称,
g、 关键,年龄,,
g、 Key.ID,
计数器=g.计数()
};
foreach(ResultSetSettings中的var a)
{
回答.写(a.ID+“~”+a.Name+“~”+a.Age+“~”+a.Counter+“
”);
}
响应。写入(“
结果结束TTICKETNO
”);
谢谢。你真的帮了我。不过有些语法差异。我将使用可以编译的语法编辑post查询。
var resultSet = from a in dtbl1.AsEnumerable()
join b in dtbl2.AsEnumerable()
on a.ID equals b.LinkID
group a by new
{
a.Name,
a.Age,
a.ID
} into g
select new
{
g.Key.Name,
g.Key.Age,
g.Key.ID,
g.Count()
};
var resultSetTicketNo = from a in dtbl1.AsEnumerable()
join b in dtbl2.AsEnumerable()
on a.Field<int>("ID") equals b.Field<int>("LinkID")
group a by new
{
Age = a["Age"],
ID = a["ID"],
Name = a["Name"]
} into g
select new
{
g.Key.Name,
g.Key.Age,
g.Key.ID,
Counter=g.Count()
};
foreach (var a in resultSetTicketNo)
{
Response.Write(a.ID + "~" + a.Name + "~" + a.Age + "~" + a.Counter + "<br/>");
}
Response.Write("<br/><br/>end of resultSetTicketNo<br/><br/>");