내 개체에는 용어, 제목 및 표시 등 3 개의 필드가 있습니다. 나는 어떤 주제에 대해서 다른 표식을 가진 목록을 갖고 싶다.LinQ에서 두 개의 목록을 비교하여 폭포수 차트 데이터를 얻으십시오.
예 :
첫 번째 목록
Term1, English,90
Term1, Maths, 60
Term1, Physics, 30
두 번째 목록
Term2, English, 95
Term2,Maths, 60
Term2, Chemistry, 20
마지막으로 내가이 원하는
English : +5
Physics : +30
Chemistry : -20.
나는 차이를 얻기 위해 아래 쿼리를 사용하고, 그러나 만약 그것이 실패하면 전자 키 필드 값이 두 목록에서 동일하지 않습니다 (이 경우에 따라) :
var diffData = list1.Union(list2)
.GroupBy(m => m.Subject)
.Select(d=>
{
Subject= d.Key,
Difference = d.OrderBy(m =>m.Term).Select(s => s.Mark).Aggregate(t1, t2) => t2 - t1)
}).Where(m => m.Difference != 0).ToList();
이
당신이 화학은 20 일하고자하는 물리 마십시오 출력 -30 일하기? 그것은 영어가 +5와 더 일관성이있는 것처럼 보입니다. –
@steaks 전체 외부 조인이 필요합니다. 나는 그들의 공통점을 알고 싶다. –
나는 완전한 외부 조인을 원한다는 것을 이해한다. 그러나, 나는 당신이 차이를 어떻게 가져 가고 싶은지 이해하지 못한다. 영어, 물리 및 화학의 차이점을 고려할 때 일관성있는 방법이 없습니다. –