繁体   English   中英

将Linq查询从vb.net转换为C#

[英]Translating a Linq query from vb.net to c#

与C#等效的代码是什么?

VB代码

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}
        );

唯一的不同是生成的匿名类型具有不同的字段名称( peresRoweRow ),但这很容易更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM