大佬教程收集整理的这篇文章主要介绍了在 C# 中过滤内部列表 - 根据 where 条件选择,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个回应
List<ValIDationModel> valIDationDto;
我想返回带有视图列表的 List<ValIDationModel>
,其中仅包含 gtype=health
@R_539_10673@下事情
returnResult = valIDationDto.Where(a => a.VIEws.Any(i => i.gType == "health")).ToList();
但没有运气。
有人可以帮忙吗?
public class ValIDationModel
{
public MetadataDto Metadata { get; set; }
public String Type { get; set; }
public String PID { get; set; }
public List<ListVIEw> ListVIEws { get; set; }
}
public partial class ListVIEw
{
public String EType { get; set; }
public String Vname { get; set; }
public String Fname { get; set; }
public String FType { get; set; }
public String Path { get; set; }
public String GType { get; set; }
public String Enabled { get; set; }
public bool IsTrue { get; set; }
}
也许把字符串比较改成忽略大小写,
i.GType.Equals(groupType,StringComparison.ordinalIgnoreCasE)
这在 LinqPad 中有效,
var list = new List<ValidationModel>
{
new ValidationModel { ListViews = new List<View>{ new View { GType="health" } } },new ValidationModel { ListViews = new List<View>{ new View { GType="health" } } },};
var groupType = "health";
list.Where(a => a.ListViews.Any(i => i.GType.Equals(groupType,StringComparison.ordinalIgnoreCasE))).Dump();
,
我认为您误解了 Any
函数。
确定序列的任何元素是否存在或满足 条件。
您应该改用 All
判断一个序列的所有元素是否都满足条件
returnResult = validationDto.Where(a => a.Views.All(i => i.GroupType == groupTypE)).ToList();
,
每当你对复杂的条件感到困惑时,你可以将逻辑提取到它自己的方法中。这允许您单独测试方法以确保您的逻辑正确。
我对您的要求不是很清楚,但这似乎是正确的:
bool HasOnlyHealth(ValidationModel model)
{
if (model.ListViews.Count != 1) return false;
if (model.ListViews.Single().ToUpper() != "HEALTH") return false;
return true;
}
然后将该方法作为您的委托传递给 Where
子句。
returnResult = validationDto.Where(HasOnlyHealth).ToList();
以上是大佬教程为你收集整理的在 C# 中过滤内部列表 - 根据 where 条件选择全部内容,希望文章能够帮你解决在 C# 中过滤内部列表 - 根据 where 条件选择所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。