我不確定爲什麼這不能正常工作。是否可能是因爲我試圖在數據類上使用表達式而不是該類中的單個字段?除()和Intersect()不能正常工作 - LINQ
adminOnlyGroups
應該返回管理員擁有組和用戶沒有,但它返回所有管理的組
userOnlyGroups
在做同樣的,它返回所有用戶組
commonGroups
應該返回他們的共同點,其中有兩個羣體,但它返回null或空
數據類
[DataContract]
public class InvestigatorGroupData
{
[DataMember]
public int InvestigatorGroupId { get; set; }
[DataMember]
public string InvestigatorGroupName { get; set; }
}
摘錄我的控制器的
IEnumerable<InvestigatorGroupData> adminGroups = proxy.GetInvestigatorGroups(adminId);
IEnumerable<InvestigatorGroupData> userGroups = proxy.GetInvestigatorGroups(userId);
// Groups that admin has and user doesn't. These will be enabled and unselected
IEnumerable<InvestigatorGroupData> adminOnlyGroups = adminGroups.Except(userGroups);
// Groups that the user has and admin doesn't. These will be disabled and selected
IEnumerable<InvestigatorGroupData> userOnlyGroups = userGroups.Except(adminGroups);
// Groups in common. These will be enabled and selected
IEnumerable<InvestigatorGroupData> commonGroups = adminGroups.Intersect(userGroups);
if (commonGroups.IsNullOrEmpty())
{
return View("Error");
}
您需要爲您的類定義相等成員。 – Levesque
你在哪裏定義了IComparable?否則,你正在檢查相同的對象。 –
它看起來像你的代碼使用引用相等,但你希望基於Id屬性的相等。編寫一個合適的IEqualityComparer並將其傳遞給Except。 – CodesInChaos