c# Lambda 如何 where一个数组

var classify=["可乐","鸡腿","汉堡"];

data = data.Where(s => s.classify=="可乐"|| s.classify=="鸡腿"|| s.classify=="汉堡");

如上,Lambda 的值如何筛选一个数组,前提不知道数组有什么内容,要遍历筛选包含这些值的东西

阅读 8.4k
6 个回答
var classify= new [] {"可乐", "鸡腿","汉堡"};
data = data.Where(s => classify.Contains(s.classify));
var classify=["可乐","鸡腿","汉堡"];
var data=classify.where(s=>s=="可乐" || s=="鸡腿");

var a1 = new int[]{1,2,3,4}
var a2 = new int[]{2,3}

a1.intersect(a2) //利用交集判断

新手上路,请多包涵

List<string> classify=["可乐","鸡腿","汉堡"];

data = data.Where(s => classify.Contains(s.classify)).ToList();

新手上路,请多包涵

data = data.Where(s => classify.Any( t=> t == s.classify ));

首先

你代码语法有问题。
1、

// 字符串数组不是这么创建的
var classify=["可乐","鸡腿","汉堡"]; 

2、

// s.classify 如果要这么用,你的data必须包含classify字段
data = data.Where(s => s.classify=="可乐"|| s.classify=="鸡腿"|| s.classify=="汉堡");

解决方案

// 假设你的 data 变量也是字符串数组
data = data.Where(s => s.classify=="可乐"|| s.classify=="鸡腿"|| s.classify=="汉堡");

给予一下解决方案

        static void Main(string[] args)
        {
            // 数据库
            var data = new string[] { "咖啡", "果茶", "奶茶", "可乐", "苏打水", "汉堡" };
            // 查询
            var classify = new string[] { "可乐", "鸡腿", "汉堡" };
            // 为了方便阅读代码,将查询委托独立出来
            Func<string, bool> predicate =
                                            p => classify.Any(x => x == p);

            // 循环输出结果
            data.Where(predicate)
                .ToList()
                .ForEach(item =>
                {
                    Console.WriteLine(item);
                });
        }

运行截图

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进