2

私のアプリケーションでは、リスト「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);
}

これらのユーザーは、リンク可能な他の組織に接続されているすべてのユーザーを表示するメニューで選択できます。

このコード スニペットは、所属するすべてのユーザーを組織のリストに入力します。

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);
    }
}

私の問題は、「userList」で既に選択されているユーザーなしで、この選択可能なリストを表示する必要があることです。たとえば、「Apple」というユーザーがリンクされている場合、それらは選択可能なリストに表示されません。

これにアプローチする最も効率的な方法は何でしょうか? よろしくお願いします。

4

1 に答える 1

4

両方のリストのデータ型が同じであると仮定すると、Linq が助けになります。

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

?

于 2013-04-15T15:11:00.353 に答える