这个查询似乎并不高兴。任何人的想法?
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")
)。
答案 0 :(得分:7)
这只是一个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") }
答案 1 :(得分:1)
您需要将字段运算符的结果分配给命名属性。
试试这个:
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
};