如何在Linq中处理Null数组

时间:2017-03-30 10:09:09

标签: c# .net mongodb linq

我有一个方法,使用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等。

任何建议。 感谢

1 个答案:

答案 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);
}