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();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM