繁体   English   中英

具有多个条件的LINT On DataTables

[英]LINQ On DataTables With Multiple Conditions

这个查询似乎并不高兴。 任何人的想法?

var results = from a in previousQuery
              join b in dtCounties.AsEnumerable()
              on new { a.CountyCode, a.StateCode } equals new { 
                  b.Field<string>("COUNTYCODE"),
                  b.Field<string>("StateCode") 
              }
              where b.Field<bool>("TrueOrFalse") == true
              select new
              {
                  CountyCode = a.CountyCode,
                  TrueOrFalse= b.Field<bool>("TrueOrFalse"),
                  Sum= a.Sum
              };

我得到的错误是

“无效的匿名类型成员声明符。必须使用成员赋值,简单名称或成员访问声明匿名类型成员。”

对于连接右侧的2列(即b.Field<string>("COUNTYCODE")b.Field<string>("StateCode") )。

这只是一个C#语法问题,而不是LINQ本身。 考虑以下:

var a = new { "1" };     // Error
var a = new { a = "1" }; // OK

只是为了澄清,以下是上述结果:

on new { cc = a.CountyCode, sc = a.StateCode }
    equals new { cc = b.Field<string>("COUNTYCODE"),
                 sc = b.Field<string>("StateCode") }

您需要将字段运算符的结果分配给命名属性。

尝试这个:

var results= from a in previousQuery
             join b in dtCounties.AsEnumerable()
             on new { CountryCode = a.CountyCode, StateCode = a.StateCode } 
             equals new 
                    { CountryCode = b.Field<string>("COUNTYCODE") ,
                      StateCode = b.Field<string>("StateCode") }
             where b.Field<bool>("TrueOrFalse") == true
             select new
             {
                    CountyCode = a.CountyCode,
                    TrueOrFalse= b.Field<bool>("TrueOrFalse"),
                    Sum= a.Sum
             };

暂无
暂无

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

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