将Linq查询从vb.net转换为c#
本文关键字:转换 net vb Linq 查询 | 更新日期: 2023-09-27 18:16:03
与c#等价的代码是什么?
<VB代码/em>
Dim q = From p In commDS.Tables(1).AsEnumerable() _
Join e In ds.Tables(1).AsEnumerable() On p.Field(Of Integer)("JobID") Equals e.Field(Of Integer)("JobID") And _
p.Field(Of Integer)("EventID") Equals e.Field(Of Integer)("EventID") _
Select New With {Key .resRow = p, Key .eRow = e}
下面是我正在尝试的,但它是完全错误的。
var q = (from p in commDs.Tables[1].AsEnumerable()
join e in ds.Tables[1].AsEnumerable() on
p.Field<int>("JobID") equals e.Field<int>("JobID")
&& e.Field<int>("EventID") equals p.Field<int>("EventID")
Select new{ p,e}
);
我没有意识到VB会让你这样连接多个值。在c#中,等效的是为连接键创建一个匿名类型:
var q = (from p in commDs.Tables[1].AsEnumerable()
join e in ds.Tables[1].AsEnumerable()
on new {JobID = p.Field<int>("JobID"), EventID = p.Field<int>("EventID") }
equals new {JobID = e.Field<int>("JobID"), EventID = e.Field<int>("EventID") }
select new {p,e}
);
唯一的其他区别是生成的匿名类型具有不同的字段名称(p
和e
与resRow
, eRow
),但这很容易更改。