존재합니까? 이것을 계산하는 다른 방법이 있습니까?LINQ는 (는) 그룹에 합류하여 올바른 개수로
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는
Headword1 같은 표제어 포함 ID = 1, 텍스트 = 텍스트 1
Headword2 (프로파일 1) ID = 1, 텍스트 : ID = 2, 텍스트 = 텍스트 2
Headword1 (프로파일 1)
Headword2 = 텍스트 1 ID = 1, 텍스트 : = 텍스트 1은 ( 프로필 2부터)
methodList는
Headword1 포함 I은 D = 2, 텍스트 = Headword2 텍스트 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());
이없는 작품! 난 그냥
키를 가지고 : 2
키 : 텍스트 1, 텍스트 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
이 QueryOver 메소드는 실제로 목록을 반환합니까? 대신에'IQueryable'으로 남겨두면 그것을 더 잘 최적화 할 수 있습니다. –