我开始使用.NET 4.5实体框架编写wcf Web服务。
我很难弄清楚如何输出以下linq查询 这是我的代码:
using (var context = new myEntities())
{
var countResultsByArea = from v in context.vPerson
join pe in context.pEvent on v.pevent_id equals pe.pevent_id
join pd in context.pEventArea on pe.pevent_id equals pd.pevent_id
join d in context.dArea on pd.darea_id equals d.darea_id
join z in
(
from el in context.event
select new { el.event_id, el.title_1, el.title_2, el.event_date }
) on pe.event_id equals z.event_id
where (v.status.ToString() == "A" || v.status.ToString() == "P") && pe.event_id == 800
&& new[] { 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449 }.Contains(pd.area_id)
group new { d, z, v } by new { d.name_1, z.title_1 } into y
let myGroup = y.FirstOrDefault()
let myDArea = myGroup.d
let myPEvent = myGroup.z
select new { distArea = myDArea.name_1, title = y.Max(x => x.z.title_1), personCount = y.Count() };
if (countResultsByArea != null)
foreach (var item in countResultsByArea)
{
Console.WriteLine(item.distArea);
Console.WriteLine(item.title);
Console.WriteLine(item.personCount);
}
else
throw new Exception(string.Format("Error retrieving voter count by CD", "Error"));
}
在foreach循环返回错误:
之前,我没有收到错误LINQ to Entities无法识别方法'System.String ToString()'方法,并且此方法无法转换为商店 表达
我在这里看到了其他问题,答案使用.AsEnumerable将查询输出为List,但我不知道如何修改linq查询,因为它太复杂了。
任何帮助将不胜感激。
答案 0 :(得分:0)
由于错误明确指出,EF的查询翻译器不知道如何处理ToString()
。
如果是char
,您可以直接使用单引号将其与字符文字进行比较。
答案 1 :(得分:0)
不要在v.status字段上使用.ToString()。
where (v.status == "A" || v.status == "P") && pe.event_id == 800