• C#使用LINQ查询集合


    C# 中的语言集成查询 (LINQ) | Microsoft Docs

    LINQ 查询简介 (C#) | Microsoft Docs

    官方描述LINQ的概念:

      语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称。 数据查询历来都表示为简单的字符串,没有编译时类型检查或 IntelliSense 支持。 此外,需要针对每种类型的数据源了解不同的查询语言:SQL 数据库、XML 文档、各种 Web 服务等。 借助 LINQ,查询成为了最高级的语言构造,就像类、方法和事件一样。

    对于编写查询的开发者来说,LINQ 最明显的“语言集成”部分就是查询表达式。 查询表达式采用声明性 查询语法 编写而成。 使用查询语法,可以用最少的代码对数据源执行筛选、排序和分组操作。 可使用相同的基本查询表达式模式来查询和转换 SQL 数据库、ADO .NET 数据集、XML 文档和流以及 .NET 集合中的数据。

    转载:c# list 集合操作 - 静静随笔 - 博客园 (cnblogs.com)

    c#中如何使用到模糊查询,先举个最简单实用的例子,可在vs控制台应用程序中输出:

    定义实体类:

     public class Student
            {
                public int ID { get; set; }
                public string Name { get; set; }
                public int? Age { get; set; }
                public string Sex { get; set; }
            }
     
    为实体类赋值存放到集合list中:
     List<Student> lsStudent = new List<Student>(){
                    new Student { ID = 1,Name = "1", Age = 128, Sex = null },
                    new Student { ID = 2, Name = "2", Age = 18, Sex = "女" },
                    new Student { ID = 3, Name = "31", Age = 13, Sex = "男" },
                    new Student { ID = 4, Name = "4", Age = 23, Sex = "男" },
                    new Student { ID = 5, Name = "51", Age = null, Sex = "女" },
                    new Student { ID = 6, Name = "6", Age = null, Sex = "女" },
                    new Student { ID = 7, Name = "7", Age = null, Sex = "女" }
                };
    模糊查询条件:根据Name=1或者Sex=女模糊查询
       string key = "1";
       string sex = "女";
      方法一:linq
       List<Student> resultList = (from c in lsStudent where  c.Name.Contains(key) ||c.Sex.Contains(sex) select c).ToList();
      知识讲解
      1,Contains("key"),---意义等同于ql server中的like '%key%',从两端模糊匹配
      2,StartsWith("key"),---意义等同于sql server中的like 'key%',从开头模糊匹配
      3,EndsWith("key"),---意义等同于sql server中的like '%key',从结尾模糊匹配
     
    要实现字符串的精确匹配,可以用 == 
    from c in lsStudent where  c.Name == "key"
     
     
     方法二
       List<Student> resultList = lsStudent.Where(str => str.Name.Contains(key) || str.Sex.Contains(key)).ToList();
     
      方法三
       List<Student> resultList = (from c in lsStudent where c.Name.IndexOf(key)>=0 ||c.Sex.IndexOf(sex)>=0 select c).ToList();
      知识讲解
      1,c.Name.IndexOf(key)>=0 ---意义等同于 like '%key%',从两端模糊匹配
      2,c.Name.StartsWith(key) ---等同于like 'key%' ,从开头模糊匹配
      3,c.Name.EndWith(key) ---等同于like '%key',从结尾模糊匹配
      vs控制台输出打印代码:
     
      string json = JsonConvert.SerializeObject(resultList, Newtonsoft.Json.Formatting.Indented);
      Console.WriteLine(json);
     
     

    这里介绍一下C# list的基础操作: 去重、差集、并集、交集

    下面,我们看看例子。我们创建了一个User实体,包含两个list,User实体如果Id相等,则相等。

    users1是id 1到4的集合,users2是id 4到8的集合。

    复制代码
                List<User> users1 = new List<User>();
                users1.Add(new User() {Id = 1, Age = 1, Name = "Name01"});
                users1.Add(new User() { Id = 2, Age = 2, Name = "Name02" });
                users1.Add(new User() { Id = 3, Age = 3, Name = "Name03" });
                users1.Add(new User() { Id = 4, Age = 4, Name = "Name04" });
    
                List<User> users2 = new List<User>();
                users2.Add(new User() { Id = 4, Age = 44, Name = "Name044" });
                users2.Add(new User() { Id = 5, Age = 55, Name = "Name01" });
                users2.Add(new User() { Id = 6, Age = 66, Name = "Name06" });
                users2.Add(new User() { Id = 7, Age = 77, Name = "Name07" });
                users2.Add(new User() { Id = 8, Age = 88, Name = "Name08" });
    
                //把两个list合并在一起
                var result1 = new List<User>();
                result1.AddRange(users1);
                result1.AddRange(users2);
    
                //去重:在result1中去重
                var result2 = result1.Distinct().ToList();
    
                //差集:users1在users2之中的差集
                var result3 = users1.Except(users2).ToList();
    
                //并集:users1与users2 合起来不重复的元素
                var result4 = users1.Union(users2).ToList();
    
                //交集:users1与users2 相同的元素
                var result5 = users1.Intersect(users2).ToList();
  • 相关阅读:
    拨号进入防盗界面
    手机开机或启动广播接收者
    time、datetime
    py 包和模块,软件开发目录规范
    递归函数
    匿名函数,内置函数
    三元表达式,列表生成式,生成器生成式
    迭代器,生成器
    XPath
    闭包,装饰器
  • 原文地址:https://www.cnblogs.com/fangjb/p/15843213.html
Copyright © 2020-2023  润新知