C# c asp.net:无法比较“System.Int32[]”类型的元素。仅支持基元类型、枚举类型和实体类型。”

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

我试图根据AspNetUsersGroupMaps表中的值数组查询ProductiveUnits表。AspNetUserID可以链接到AspNetUsersGroupMaps表上的许多UserGroupID。我只希望返回ProductiveUnit.UserGroupID=AspNetUsersGroupMaps.UserGroupID的ProductiveUnits列表,如下所示:

   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)