中易网

linq多单表和多表的条件查询

答案:2  悬赏:10  
解决时间 2021-02-21 00:00
求一个正确的Linq多条件可空查询
比如
UserModel里面有三个字段 int Id string Name string Age

List list=new List();
用户通过姓名和年龄 查询出Id
当然 用户可能少输入一个条件 如果 用户两个都没有输入 就全都查询出来
求LINQ代码
最佳答案
动态查询说简单也简单,比如你上述仅仅两个字段的判断,说复杂也复杂,如果要做到任意字段名和值的选项。下面只给你写出【简单】的示例代码
    class Program
    {
        static void Main(string[] args)
        {
            List lst = new List
            {
                new U(1,"a",20),
                new U(2,"b",20),
                new U(3,"a",30),
                new U(4,"c",20)
            };

            //var v = Search(lst, "a", 30);//3
            //var v = Search(lst, "a", 20);//1
            var v = Search(lst, "", 20);//1,2,4

            foreach (U u in v)
                Console.WriteLine(u);

            Console.ReadLine();

        }

        static List Search(List lst, string n, int a)
        {
            var v = lst.Where(x => true);
            if (!string.IsNullOrWhiteSpace(n))
                v = v.Where(x => x.N == n);
            if (a > 0)
                v = v.Where(x => x.A == a);
            return v.ToList();
        }
    }

    public class U
    {
        public U(int i, string n, int a)
        { I = i; N = n; A = a; }
        public int I;
        public string N;
        public int A;

        public override string ToString()
        {
            return string.Format("I={0}\tN={1}\tA={2}\n", I, N, A);
        }
    }
全部回答
  • 1楼网友:星星坠落
  • 2021-02-20 01:32
把一个作为结果再第二个中查询 一定放到同一个实体中
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯