无法创建"xxx"类型的常量值.在此上下文中仅支持基元类型或枚举类型

r.v*_*esh 5 c# linq

我有两个表是州和名单.

------------
id | state
------------
1  |xxx
2  |yyy
Run Code Online (Sandbox Code Playgroud)

名单

---------------
id|Name   |stateid
--------------
1|aaa     |1
2|abb     |1
3|ccc     |2
4|dds     |2
Run Code Online (Sandbox Code Playgroud)

我希望结果表为

------------------
state   |count
-------------------
xxx     | 2
yyy     | 2
Run Code Online (Sandbox Code Playgroud)

我想使用linq查询以上结果

我尝试下面的代码,但返回错误为(无法创建类型'xxx'的常量值.在此上下文中仅支持基本类型或枚举类型.)

var count= (from n in bc.db.state 
            select new 
                  { 
                    states = n.state, 
                    count = (from c in bc.db.namelist 
                             where c.stateid == n.id 
                             select n).Count() 
                   });
Run Code Online (Sandbox Code Playgroud)

有谁知道如何解决这个问题?

Mic*_*ick 2

您需要使用分组依据...

var list= 
(from n in bc.db.state 
join c in bc.db.namelist on n.id equals c.stateid 
group n by n.state into g
select new 
{
    State = g.Key,
    Count = g.Count()
});
Run Code Online (Sandbox Code Playgroud)