我是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("");
}
我不知道上面的表达是正确的还是可以改进的。
5条答案
按热度按时间qnyhuwrf1#
我认为您想使用任何:
1u4esq0p2#
只是为了补充布雷特的解决方案:
可能是你要找的。但它几乎是一样的:
这里唯一区别是:
Any
将在 predicate 的第一个被评估为真的项上返回,并且All
将在 predicate 的第一个被评估为假的项上返回.但是由于All
的 predicate 被求反,所以它将出现在列表中的相同元素处,并且将具有相同的结果.但是当您需要更多的检查时,
All
就派上用场了,例如:ep6jt1vc3#
你想知道是否存在一个空值**,所以另一个选择是使用
Exists()
:mfpqipee4#
是的,你可以这样做。我申请如下:
bq3bfh9z5#
您可以尝试类似下面的操作来过滤掉一些值: