C# c asp.net:无法比较“System.Int32[]”类型的元素。仅支持基元类型、枚举类型和实体类型。”
我试图根据AspNetUsersGroupMaps表中的值数组查询ProductiveUnits表。AspNetUserID可以链接到AspNetUsersGroupMaps表上的许多UserGroupID。我只希望返回ProductiveUnit.UserGroupID=AspNetUsersGroupMaps.UserGroupID的ProductiveUnits列表,如下所示:C# c asp.net:无法比较“System.Int32[]”类型的元素。仅支持基元类型、枚举类型和实体类型。”,c#,asp.net,asp.net-mvc,linq,C#,Asp.net,Asp.net Mvc,Linq,我试图根据AspNetUsersGroupMaps表中的值数组查询ProductiveUnits表。AspNetUserID可以链接到AspNetUsersGroupMaps表上的许多UserGroupID。我只希望返回ProductiveUnit.UserGroupID=AspNetUsersGroupMaps.UserGroupID的ProductiveUnits列表,如下所示: public ActionResult ProductiveUnits_Read([DataSourceR
public ActionResult ProductiveUnits_Read([DataSourceRequest]DataSourceRequest request)
{
var UserID = User.Identity.GetUserId();
int[] selectedIds = db.AspNetUsersGroupMaps.Where(t => t.AspNetUserID == UserID).Select(x => x.UserGroupID).ToArray();
IQueryable<ProductiveUnit> productiveunits = db.ProductiveUnits.Where(p => p.UserGroupID.Equals(selectedIds));
DataSourceResult result = productiveunits.ToDataSourceResult(request, productiveUnit => new {
ProdUnitID = productiveUnit.ProdUnitID,
PU_Text = productiveUnit.PU_Text,
PUGroup = productiveUnit.PUGroup,
SerialNo = productiveUnit.SerialNo,
ExtSysPU_ID = productiveUnit.ExtSysPU_ID,
ProdUnitNo = productiveUnit.ProdUnitNo,
CompanyID = productiveUnit.CompanyID,
Criticality = productiveUnit.Criticality,
YearModel = productiveUnit.YearModel,
CostCentreID = productiveUnit.CostCentreID,
CurrencyID = productiveUnit.CurrencyID,
StartupDate = productiveUnit.StartupDate,
UserGroupID = productiveUnit.UserGroupID,
});
return Json(result);
}
请协助使用:
您无法比较int[]和int是否相等,但可以检查int[]是否包含特定的int。您试图将单个int与int数组进行比较,但我不知道数组比较的代码是什么。如果我将其更改为contains,则会出现以下错误:“int[]”不包含“contains”的定义,并且最佳扩展方法重载“Queryable.ContainsIQueryable,int?”需要类型为“IQueryable”的接收器当我更改为建议的代码时,会出现以下错误:“int[]'不包含'Contains'的定义,而最佳扩展方法重载'Queryable.ContainsIQueryable,int'需要'IQueryable'类型的接收器。UserGroupID必须为nullable,请尝试强制转换:p=>SelectedDS.Containsintp.UserGroupID谢谢@Johnathan Barclay,这已经解决了我的问题!
public partial class AspNetUsersGroupMap
{
public int ID { get; set; }
public string AspNetUserID { get; set; }
public int UserGroupID { get; set; }
public virtual UserGroup UserGroup { get; set; }
public virtual AspNetUser AspNetUser { get; set; }
}
p => selectedIds.Contains(p.UserGroupID)