这个查询似乎不太满意。 有人有什么想法吗?
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
};