C# 将包含检查为null属性的int数组
我在int[]中有一个属性,我想检查列表中的特定属性是否存在于数组中。这是我的财产类别C# 将包含检查为null属性的int数组,c#,linq,C#,Linq,我在int[]中有一个属性,我想检查列表中的特定属性是否存在于数组中。这是我的财产类别 public class WaitingLists { [Key] public Int32 Id { get; set; } public Guid UserId { get; set; } public Int32 GameTableId { get; set; } public Int32 WaitingListTy
public class WaitingLists
{
[Key]
public Int32 Id { get; set; }
public Guid UserId { get; set; }
public Int32 GameTableId { get; set; }
public Int32 WaitingListTypeId { get; set; }
**public Int32 ? StakeBuyInId { get; set; }**
}
然后我想检查我的列表中是否存在StakeBuyInId
这是Linq的代码
public GameListItem[] GetMyWaitingList(Guid UserId, int[] WaitingListTypeIds, int[] StakeBuyInIds)
{
ProviderDB db = new ProviderDB();
List<GameListItem> objtempGameListItem = new List<GameListItem>();
List<GameTables> objGameTablesList = new List<GameTables>();
var objWaitingListUser = db.WaitingLists.Where(x => x.UserId.Equals(UserId));
if (WaitingListTypeIds != null)
{
objWaitingListUser = objWaitingListUser.Where(x => WaitingListTypeIds.Contains(x.WaitingListTypeId));
}
**if (StakeBuyInIds != null)
{
objWaitingListUser = objWaitingListUser.Where(x => x.StakeBuyInId != null ? StakeBuyInIds.Contains(x.StakeBuyInId) : false);
}**
return objtempGameListItem.ToArray();
}
PublicGameListItem[]GetMyWaitingList(Guid用户ID,int[]WaitingListTypeID,int[]StakeBuyinID)
{
ProviderDB=新的ProviderDB();
List objtempGameListItem=新列表();
List objGameTablesList=新列表();
var objWaitingListUser=db.WaitingLists.Where(x=>x.UserId.Equals(UserId));
if(WaitingListTypeId!=null)
{
objWaitingListUser=objWaitingListUser.Where(x=>WaitingListTypeId.Contains(x.WaitingListTypeId));
}
**if(StakeBuyInIds!=null)
{
objWaitingListUser=objWaitingListUser.Where(x=>x.StakeBuyInId!=null?StakeBuyInIds.Contains(x.StakeBuyInId):false);
}**
返回objtempGameListItem.ToArray();
}
但它向我显示了一个包含不允许“int”的错误。它只重载“int”。那么您知道如何使用linq为null属性使用Contains吗?谢谢你的帮助。试试看
StakeBuyInIds.Contains((Int32)x.StakeBuyInId)
或
您还可以创建一个扩展
public static bool Contains<T>(this IList<T> container, T? content)
{
if (content.HasValue)
if (container.Contains(content.Value))
return true;
return false;
}
而不是
objWaitingListUser = objWaitingListUser.Where(x => x.StakeBuyInId != null
? StakeBuyInIds.Contains(x.StakeBuyInId)
: false);
或者更好的
StakeBuyInIds.Contains(x.StakeBuyInId.GetValueOrDefault())
或者objWaitingListUser=objWaitingListUser.Where(x=>StakeBuyInIds.Contains(x.StakeBuyInId.GetValueOrDefault());
它不起作用var MatchedGroup=query.Where(x=>x.ContentGroupID==cgItem.GroupID&&x.IsInGrpAndPublish!=null&&x.IsInGrpAndPublish==1&&publishedSitesFilter.Contains(x.SiteID.GetValueOrDefault())。选择(x=>new ContentGroupEntity{GroupID=cgItem.GroupID,GroupName=cgItem.GroupName}).FirstOrDefault()工作正常,但在方法签名后需要以下内容:where T:struct,IComparable
objWaitingListUser = objWaitingListUser.Where(x => StakeBuyInIds.Contains(x.StakeBuyInId))
objWaitingListUser = objWaitingListUser.Where(x => x.StakeBuyInId != null
? StakeBuyInIds.Contains(x.StakeBuyInId)
: false);