0

コントローラーでいくつかのエラーが発生しています。
最初に仕入先リストを取得し、次にすべての仕入先の ID を取得し、すべての仕入先のすべてのユーザーを取得しました。

public ActionResult Grid(bool? active)
    {
        var suppliers = Context.Suppliers.AsNoTracking()
            .WhereIf(active != null, e => e.Active == active)
            .Select(e => new SupplierRow
                            {
                                Id = e.Id,
                                FullName = e.FullName,
                                Active = e.Active,
                                Visits = e.Visits,

                            })
                            .ToList();


        List<int> supplierIds = new List<int>();
        foreach (SupplierRow sr in suppliers)
        {
            supplierIds.Add(sr.Id);
        }

        var users = Context.Users.AsNoTracking()
            .Where(e => supplierIds.Contains(e.SupplierId))
            .Select(e => new UserRow
            {
                Id = e.Id,
                FullName = e.FullName,
                Email = e.Email,
                Name = e.Name,
                Status = e.Status,
                Role = e.Role,
                SupplierId = e.SupplierId
            }).toList();

        foreach (UserRow ur in users) 
        {
            foreach (SupplierRow sr in supplier) 
            {
                if (ur.SupplierId == sr.Id) 
                {
                    sr.Users.Add(ur);
                } 
            }
        }

        return PartialView("_Grid", suppliers);
    }

ここ
ここに画像の説明を入力

ここここに画像の説明を入力
で私のコードの何が問題になっていますか? それを修正する方法は?

4

1 に答える 1

1

Guid問題は、値のみを受け入れるコレクションにオブジェクトを追加しようとしていることintです。YourUser.SupplierIdはタイプGuid?(またはNullable<Guid>)のオブジェクトですが、 Supplier.IdisGuidです。コレクションを次のように宣言して修正します。

List<Guid> supplierIds = new List<Guid>();

次に、コードで次を使用します。

foreach(SupplierRow sr in suppliers)
{
    supplierIds.Add(sr.Id);
}

SupplierId.HasValueユーザーに対して同じことを行いますが、値があるかどうかをSupplierId.Value確認し、値を読み取る必要があることを除きます。これは、null 許容 Guid として宣言されているためです。

于 2013-06-06T10:23:45.113 に答える