C# 从存在于其他列表中的列表中删除结果

C# 从存在于其他列表中的列表中删除结果,c#,asp.net,asp.net-mvc-3,C#,Asp.net,Asp.net Mvc 3,在我的应用程序中,您可以将用户链接到存储在列表“userList”中的组织: List<OrganizationUserViewModel> userList = new List<OrganizationUserViewModel>(); foreach (var ou in org.Users.OrderBy(x => x.User.UserName).ToList()) { var user = Gateway.Instance.Map<Use

在我的应用程序中,您可以将用户链接到存储在列表“userList”中的组织:

List<OrganizationUserViewModel> userList = new List<OrganizationUserViewModel>();

foreach (var ou in org.Users.OrderBy(x => x.User.UserName).ToList())
{
    var user = Gateway.Instance.Map<User, OrganizationUserViewModel>(ou.User);
    user.Organization_UserId = ou.Organization_UserId;
    userList.Add(user);
}
List userList=newlist();
foreach(org.Users.OrderBy(x=>x.User.UserName.ToList()中的var ou)
{
var user=Gateway.Instance.Map(ou.user);
user.Organization\u UserId=ou.Organization\u UserId;
添加(用户);
}
可以在菜单中选择这些用户,该菜单显示连接到其他能够链接的组织的所有用户

此代码片段填充组织列表,其中包含所有附加到这些组织的用户:

foreach (var childOrg in viewModel.ChildOrganizations)
{
    childOrg.Users = new List<OrganizationUserViewModel>();
    var users = this._organizationManager.GetOrganizationUsers(childOrg.OrganizationId);
    foreach (var user in users)
    {
        var u = Gateway.Instance.Map<User, OrganizationUserViewModel>(user.User);
        u.Organization_UserId = user.Organization_UserId;
        childOrg.Users.Add(u);
    }
}
foreach(viewModel.ChildOrganizations中的var childOrg)
{
childOrg.Users=新列表();
var users=this.\u organizationManager.GetOrganizationUsers(childOrg.OrganizationId);
foreach(用户中的var用户)
{
var u=Gateway.Instance.Map(user.user);
u、 Organization\u UserId=user.Organization\u UserId;
childOrg.Users.Add(u);
}
}
我的问题是,我需要在“userList”中显示此可选列表,而不显示任何已选择的用户。例如,如果一个名为“Apple”的用户被链接,他们不应该出现在可选列表中


最有效的方法是什么?非常感谢。

假设两个列表具有相同的数据类型,请执行以下操作:

var allowedSelectionsList = selectableList.Except(selectedList).ToList();

假设两个列表具有相同的数据类型,则Linq将用于救援:

var allowedSelectionsList = selectableList.Except(selectedList).ToList();

什么是“最有效”呢?它模糊不清,定义不清。嗨,谢谢你的帮助。我的意思是性能方面的,不必走多个foreach语句之类的路线。我还是一个相对的新手,所以请原谅任何讨厌的代码!“最有效”是什么意思?它模糊不清,定义不清。嗨,谢谢你的帮助。我的意思是性能方面的,不必走多个foreach语句之类的路线。我还是一个相对的新手,所以请原谅任何讨厌的代码!以及适当的.Equals实现:@faester…这也需要一个适当的
GetHashCode
实现,但我假设对象相等就足够了(即两个列表引用了相同的对象集),GetHashCode是否可以用于列表成员比较?关于引用相等,您可能是对的,但我无法从OPs代码中判断。(我将很高兴删除评论,该评论仅用于提醒。)非常感谢,让我尝试一下,然后我会回复你的@faester:这两者是相辅相成的,如果你提供了一个相等的实现,你还必须提供GetHashCode,即使这个问题不需要它,否则你会把问题留到以后的某个时候。还有一个正确的.Equals实现。:)@faester…这也需要一个适当的
GetHashCode
实现,但我假设对象相等就足够了(即两个列表引用了相同的对象集),GetHashCode是否可以用于列表成员比较?关于引用相等,您可能是对的,但我无法从OPs代码中判断。(我将很高兴删除评论,该评论仅用于提醒。)非常感谢,让我尝试一下,然后我会回复你的@faester:这两者是相辅相成的,如果你提供了一个平等的实现,你也必须提供GetHashCode,即使这个问题不需要它,否则你会把问题留到以后。