【问题标题】:Filter IEnumerable<T> based on IEnumerable,String>根据 IEnumerable,String> 过滤 IEnumerable<T>
【发布时间】:2014-11-10 03:43:06
【问题描述】:

嗨,我有以下代码,问题是我想基于过滤器进行选择或位置,但过滤器是 IEnumerable 我缺少 linq 来完成查询。我想要过滤器中包含 ClassB.MyType 的所有 classB。提前致谢

 public class EntryPoint
    {
        public IEnumerable<ClassB> FilterClass(IEnumerable<string> filter)
        {
            var myClass = new MyClass(); // populate with values

            return myClass.Values.Where(x => x.MyType == filter//??));
        }
    }

    public class MyClass
    {
        public IEnumerable<ClassB> Values { get; set; }
    }

    public class ClassB
    {
        public string MyType { get; set; }

        public string MyValue { get; set; }
    }

【问题讨论】:

    标签: c# linq collections ienumerable


    【解决方案1】:

    尝试使用Enumerable.Contains

    return myClass.Values.Where(x => filter.Contains(x.MyType));
    

    但是,这可能会比较引用相等 - 也可以考虑以下替代方法

    return myClass.Values.Where(x => filter.Any(f => x.MyType.Equals(f)));
    

    【讨论】:

    • 让我发帖
    【解决方案2】:

    肯定是这样的

    return myClass.Values.Where(x => filter.Any(f => f == x.MyType));
    

    【讨论】:

      【解决方案3】:

      试试这个

      return myClass.Values.Where(x =>filter.Contains(x.MyType));
      

      【讨论】:

      • 谢谢你的回答,我想我想去 r 参照平等!
      猜你喜欢
      • 1970-01-01
      • 2012-09-17
      • 2018-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-19
      相关资源
      最近更新 更多