要检查null或空的Linq Lambda表达式

chy5wohz  于 2022-12-20  发布在  其他
关注(0)|答案(5)|浏览(177)

我是Linq和Lambda表达式的新手,我想更改这段代码:

if (string.IsNullOrEmpty(model.PictureUrl1) && string.IsNullOrEmpty(model.Picture2Url) &&
        string.IsNullOrEmpty(model.Picture3Url) && string.IsNullOrEmpty(model.Picture4Url) &&
        string.IsNullOrEmpty(model.Picture5Url) && string.IsNullOrEmpty(model.Picture6Url))
        return Content("");

现在,我重构了模型,使其具有一个具有这些属性的对象和一个所述对象的列表:

public class PublicInfoModelItem 
{
    public string PictureUrl { get; set; }
    public string Text { get; set; }
    public string Link { get; set; }
}

名单如下:

public List<PublicInfoModelItem> ListOfImages = new List<PublicInfoModelItem>();

型号:

public class PublicInfoModel 
{
    public List<PublicInfoModelItem> ListOfImages = new List<PublicInfoModelItem>();

    public string Container { get; set; }

    public int TemplateId { get; set; }

    public PublicInfoModelItem InfoModelItem { get; set; }

}

我在想一个Lambda表达式,类似于:

var result = model.ListOfImages.Where(x => string.IsNullOrEmpty(x.PictureUrl)).ToList();
    if (result == null)
    {
        return Content("");
    }

我不知道上面的表达是正确的还是可以改进的。

qnyhuwrf

qnyhuwrf1#

我认为您想使用任何:

if (!model.ListOfImages.Any(x => string.IsNullOrEmpty(x.PictureUrl)))
{
    return Content("");
}
1u4esq0p

1u4esq0p2#

只是为了补充布雷特的解决方案:

if (!model.ListOfImages.Any(x => string.IsNullOrEmpty(x.PictureUrl)))
{
    return Content("");
}

可能是你要找的。但它几乎是一样的:

if(model.ListOfImages.All(x=> !string.IsNullOrEmpty(x.PictureUrl)))
{
return Content("");
}

这里唯一区别是:Any将在 predicate 的第一个被评估为真的项上返回,并且All将在 predicate 的第一个被评估为假的项上返回.但是由于All的 predicate 被求反,所以它将出现在列表中的相同元素处,并且将具有相同的结果.
但是当您需要更多的检查时,All就派上用场了,例如:

if(model.ListOfImages.All(x=> !string.IsNullOrEmpty(x.PictureUrl) && x.PictureUrl.EndsWith(".jpg")))
{
return Content("");
}
ep6jt1vc

ep6jt1vc3#

你想知道是否存在一个空值**,所以另一个选择是使用Exists()

if(model.ListOfImages.Exists(image => string.IsNullOrEmpty(x.PictureUrl)))
{
    return Content("");
}
mfpqipee

mfpqipee4#

是的,你可以这样做。我申请如下:

var accionistas = repositorio.FindEntitySet<TBL_Accionista>(p => p.Estatus.Equals(1)).Select(a => new { a.Id_Accionista, Nombre = a.Apellido_Paterno + " " + a.Apellido_Materno + " " + a.Primer_Nombre, RazonSocial = String.IsNullOrEmpty(a.Razon_Social)?string.Empty:a.Razon_Social, a.RFC });
bq3bfh9z

bq3bfh9z5#

您可以尝试类似下面的操作来过滤掉一些值:

var result = ListOfImages.Any(x => (!string.IsNullOrEmpty(x.PictureUrl)) && (x.PictureUrl.Contains("text-to-filter")));

相关问题