我有一个方法,使用linq获取多个数组和过滤数据,我遇到的问题是一个或多个数组可能为null,我不知道如何处理Linq中的空数组。:
public IPagedList<SGProduct> GetFilteredProducts(string catID, string[] houseID, int page = 1)
{
return MongoContext.Products.AsQueryable<SGProduct>().AsEnumerable().Where(x =>houseID.Contains(x.HouseID.ToString()) && x.ProductCategoryID.ToString() == catID).ToList().ToPagedList(page, 6);
}
houseID数组也可以为null,我将为此方法提供更多参数,如Size array等。
任何建议。 感谢
答案 0 :(得分:1)
只需为数组添加空检查,如果它为空,则结束创建空数据。
public IPagedList<SGProduct> GetFilteredProducts(string catID, string[] houseID, int page = 1)
{
if(houseID == null) houseID = new string[] {};
return MongoContext.Products.AsQueryable<SGProduct>().AsEnumerable().Where(x =>houseID.Contains(x.HouseID.ToString()) && x.ProductCategoryID.ToString() == catID).ToList().ToPagedList(page, 6);
}
此外,您可以query
变量并根据条件构建它。然后你就完成了,只是实现并返回记录。
public IPagedList<SGProduct> GetFilteredProducts(string catID, string[] houseID, int page = 1)
{
var query = MongoContext.Products.AsQueryable<SGProduct>();
if(houseID == null)
query = query.Where(x =>houseID.Contains(x.HouseID.ToString()) && x.ProductCategoryID.ToString() == catID);
return query.ToList().ToPagedList(page, 6);
}