我的控制器出现了一些错误 首先,我获得了供应商列表,然后我获得了所有供应商的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);
}
这里
此处
我的代码出了什么问题?如何解决?
答案 0 :(得分:1)
问题是您尝试将Guid
对象添加到仅接受int
值的集合。您的User.SupplierId
是Guid?
(或Nullable<Guid>
)类型的对象,而Supplier.Id
是Guid
。通过将其声明为:
List<Guid> supplierIds = new List<Guid>();
然后在你的代码中使用:
foreach(SupplierRow sr in suppliers)
{
supplierIds.Add(sr.Id);
}
为用户执行相同的操作,但您必须使用SupplierId.HasValue
和SupplierId.Value
来检查它是否具有值并读取值。这是因为它被声明为可以为空的Guid。