我是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("");
}
我不知道上面的表达是否正确或是否可以改进。
答案 0 :(得分:3)
我想你想使用Any:
if (!model.ListOfImages.Any(x => string.IsNullOrEmpty(x.PictureUrl)))
{
return Content("");
}
答案 1 :(得分:2)
只是为了追加布雷特的解决方案:
if (!model.ListOfImages.Any(x => string.IsNullOrEmpty(x.PictureUrl)))
{
return Content("");
}
你可能正在寻找什么。但它几乎与:
相同if(model.ListOfImages.All(x=> !string.IsNullOrEmpty(x.PictureUrl)))
{
return Content("");
}
这里唯一的区别是:Any
将返回第一个被评估为true的项目,而All
将返回第一个对谓词变为false的项目。但是,由于All
的谓词被否定,它将出现在列表中的相同元素处,并且将具有相同的结果。
但是当您想要更多检查时,All
会派上用场,例如:
if(model.ListOfImages.All(x=> !string.IsNullOrEmpty(x.PictureUrl) && x.PictureUrl.EndsWith(".jpg")))
{
return Content("");
}
答案 2 :(得分:1)
您想要查找null /空值是否存在。所以另一种选择是使用Exists()
:
if(model.ListOfImages.Exists(image => string.IsNullOrEmpty(x.PictureUrl)))
{
return Content("");
}
答案 3 :(得分:0)
是的,你可以这样做。我申请如下:
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 });