程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在 C# 中过滤内部列表 - 根据 where 条件选择大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决在 C# 中过滤内部列表 - 根据 where 条件选择?

开发过程中遇到在 C# 中过滤内部列表 - 根据 where 条件选择的问题如何解决?下面主要结合日常开发的经验,给出你关于在 C# 中过滤内部列表 - 根据 where 条件选择的解决方法建议,希望对你解决在 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,请注明来意。