二つのlistを左外部結合し、集計結果を出力したいのですが、うまくできておりません。どこを訂正すれば望む結果を得られるでしょうか?
userクラスは人の情報、projectクラスは人が関わったプロジェクトの情報があり、where句の条件の通りに指定したプロジェクト開始月、人のIDに一致するデータがとれる想定だったのですが、条件に合致するデータがあるにもかかわらず何も取得できておりません。
public class User { public int m_id; public string m_name public User(int id,string name) { this.m_id = id; this.m_name = name; } public User() { } public int GetID() { return m_id; } public string GetName() { return m_name; } }
public class Project { public m_userID; public DateTime m_yearMonth;//プロジェクトがいつ始まったか public int m_year; public int m_month; public Detail() { } public Detail(int userID, DateTime yearMonth, int year, int month) { this.m_userID = userID; this.m_yearMonth = yearMonth; this.m_year = year; this.m_month = month; } public int GetUserID() { return m_userID; } public DateTime GetyearMonth() { return m_yearMonth; } public int GetYear() { return m_yearMonth.Year; } public int GetMonth() { return m_yearMonth.Month; } }
List<User> m_user { get; set; } List<Company> m_project { get; set; } var Joint = m_user.GroupJoin(m_projectt, u => u.m_id, d => d.m_userID, (m, d) => new { Name = m._name ID = m.m_id, Year = d.Any() ? d.FirstOrDefault().m_year : 0, Month = d.Any() ? d.FirstOrDefault().m_month : 0, } ) .Where(x => x.Year == 2020 && x.ID == 1) .GroupBy(x => x.Month) .Select(x => new { m_month = x.Key}); foreach (var group in Joint) { //listに下の項目を追加 { l_Name = group.m_name,l_Month = group.m_month}); }