LINQ 在具有多个条件的数据表上



这个查询似乎不太满意。 有人有什么想法吗?

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

相关内容

  • 没有找到相关文章

最新更新