1

ベンダーを表示するための成功クエリがありますが、今追加したいのは、どのベンダーが選択されているかどうかを示す列です (チェックボックス列として表示されます)。これらの選択は、それらを選択した FK ProfileID と UserName を含む VendorsSelected テーブルに格納されます。そのため、現在のユーザーがベンダーを表示すると、一致するベンダーと一致しないベンダーがあります。

クエリを変更するにはどうすればよいですか? 以下の Where 句は、現在のユーザーが選択したベンダーのみを取得することに注意してください。しかし、私が望むのは、選択した各ベンダーの true/false (チェックボックス) 列で表示されるすべてのベンダーです。

public IEnumerable<BrowseVendorModel> BrowseVendors()
{
    IQueryable<BrowseVendorModel> viewModel = _db.VendorProfiles
        .Include("VendorsSelected")
        .Select(s => new BrowseVendorModel
        {
            ProfileID = s.ProfileID,
            Name = s.Name,
            CompanyName = s.CompanyName,
            City = s.City,
            State = s.State,
            DateCreated = s.DateCreated
        })
        .Where(x => x.VendorsSelected.Select(s => s.UserName).Contains(HttpContext.Current.User.Identity.Name))
        .OrderBy(v => v.ProfileID);

    return viewModel;
}

ここに画像の説明を入力

4

1 に答える 1

2

Selectedプロパティ( boolean) をビュー モデルに追加します。

public IEnumerable<BrowseVendorModel> BrowseVendors()
{
    IQueryable<BrowseVendorModel> viewModel = _db.VendorProfiles
        .Include("VendorsSelected")
        .Select(s => new BrowseVendorModel
        {
            ProfileID = s.ProfileID,
            Name = s.Name,
            CompanyName = s.CompanyName,
            City = s.City,
            State = s.State,
            DateCreated = s.DateCreated,
            Selected = x.VendorsSelected.Select(s => s.UserName)
                        .Contains(HttpContext.Current.User.Identity.Name)
        })
        .OrderBy(v => v.ProfileID);

    return viewModel;
}
于 2013-03-21T21:22:07.883 に答える