LINQ通过并更正计数退出了与组的连接

本文关键字:退出 连接 LINQ | 更新日期: 2023-09-27 17:59:19

是否存在其他计数方法?

IList<DtoProfile> profileList = Session().QueryOver<DtoProfile>()
IList<Headword> methodList = Session().QueryOver<Headword>()
var hList = profileList.Select(x => x.HeadwordList).SelectMany(x => x).ToList();

profileList包含一个HeadwordList。现在hList包含类似的标题词

标题1:ID=1,文本=文本1(来自配置文件1)
标题2:ID=2,文本=文本2(来自配置文件1)
标题1:ID=1,文本=文本1(来自配置文件2)

methodList包含

标题1:ID=1,文本=文本1
标题2:ID=2,文本=文本2
标题2:ID=3,文本=文本3

我想做一本像一样的字典

关键字:文本1,值:2
关键字:文本2,值:1
键:文本3,值:0

var joined = (from headword in methodList
   join profile in hList on headword equals profile
   group headword by headword.Text
   into groupedProfile
   select groupedProfile).ToDictionary(x => x.Key, x => x.Count());

它不起作用!我只收到

关键字:文本1,值:2
关键字:文本2,值:1
在我的字典里。现在我改进到了左加入:

var joined = (from headword in methodList
   join profile in hList on headword equals profile into ps
   from profile in ps.DefaultIfEmpty()
   group headword by headword.Text
   into groupedProfile
   select groupedProfile).ToDictionary(x => x.Key, x => x.Count(y => y != null));

但是y=>y!=null不能正常工作!我得到:

关键字:文本1,值:2
关键字:文本2,值:1
键:文本3,值:1(错误,应为0)

LINQ通过并更正计数退出了与组的连接

我真的不确定我是否理解你的问题,但也许。。。

var joined = methodList
    .ToDictionary(item => item.Text, item => hList.Count(h => h.Text == item.Text))