{"id":771,"date":"2025-04-21T14:20:07","date_gmt":"2025-04-21T06:20:07","guid":{"rendered":"https:\/\/www.hyy.net\/?p=771"},"modified":"2025-04-21T14:20:07","modified_gmt":"2025-04-21T06:20:07","slug":"csharp-101-linq","status":"publish","type":"post","link":"https:\/\/diji.net\/?p=771","title":{"rendered":"C#\u4e2dLINQ\u57fa\u7840\uff1a101\u4e2a\u5e38\u7528LINQ\u64cd\u4f5c"},"content":{"rendered":"<p>C#\u4e2dLINQ\u57fa\u7840\uff1a101\u4e2a\u5e38\u7528LINQ\u64cd\u4f5c<\/p>\n<p>LINQ\uff08\u8bed\u8a00\u96c6\u6210\u67e5\u8be2\uff09\u662f C# \u4e2d\u7684\u4e00\u4e2a\u9769\u547d\u6027\u7279\u6027\uff0c\u5b83\u5f7b\u5e95\u6539\u53d8\u4e86\u5f00\u53d1\u4eba\u5458\u5904\u7406\u6570\u636e\u7684\u65b9\u5f0f\u3002\u65e0\u8bba\u4f60\u662f\u521a\u521a\u5f00\u59cb\u5b66\u4e60 C#\uff0c\u8fd8\u662f\u5e0c\u671b\u63d0\u9ad8\u7f16\u7801\u6280\u80fd\uff0c\u638c\u63e1 LINQ \u90fd\u5c06\u663e\u8457\u63d0\u5347\u4f60\u7684\u5de5\u4f5c\u6548\u7387\u548c\u4ee3\u7801\u8d28\u91cf\u3002<\/p>\n<h2>\u4ec0\u4e48\u662f C# \u4e2d\u7684 LINQ\uff1f<\/h2>\n<p>LINQ \u5c06\u67e5\u8be2\u529f\u80fd\u76f4\u63a5\u96c6\u6210\u5230 C# \u8bed\u8a00\u4e2d\uff0c\u63d0\u4f9b\u4e86\u4e00\u79cd\u7edf\u4e00\u7684\u65b9\u5f0f\u6765\u67e5\u8be2\u4e0d\u540c\u6765\u6e90\u7684\u6570\u636e\u2014\u2014\u65e0\u8bba\u662f\u6570\u7ec4\u3001\u96c6\u5408\u3001\u6570\u636e\u5e93\u3001XML \u8fd8\u662f\u5176\u4ed6\u683c\u5f0f\u3002\u901a\u8fc7\u5728 C# \u4e2d\u4f7f\u7528 LINQ\uff0c\u4f60\u4e0d\u518d\u9700\u8981\u5b66\u4e60\u591a\u79cd\u67e5\u8be2\u8bed\u8a00\u6765\u5904\u7406\u4e0d\u540c\u7684\u6570\u636e\u683c\u5f0f\u3002<\/p>\n<pre><code>\/\/ \u57fa\u672c\u7684 LINQ \u67e5\u8be2\u793a\u4f8b\nvar numbers = new List&lt;int&gt; { 1, 2, 3, 4, 5 };\nvar evenNumbers = numbers.Where(n =&gt; n % 2 == 0);\n\/\/ \u7ed3\u679c\uff1a2, 4<\/code><\/pre>\n<h2>101 \u4e2a C# \u4e2d\u5e38\u7528\u7684 LINQ \u64cd\u4f5c<\/h2>\n<p>\u8ba9\u6211\u4eec\u6765\u63a2\u8ba8\u4e00\u4e9b\u6700\u5e38\u7528\u7684 LINQ \u64cd\u4f5c\uff1a<\/p>\n<pre><code>class LinqTutorials\n{\n    static void Main(string[] args)\n    {\n        Console.WriteLine(&quot;=== C# \u4e2d\u7684 LINQ \u6559\u7a0b\uff1a101 \u4e2a LINQ \u64cd\u4f5c ===&quot;);\n\n        \/\/ \u57fa\u672c\u96c6\u5408\u521d\u59cb\u5316\n        List&lt;int&gt; numbers = new List&lt;int&gt; { 1, 2, 3, 4, 5 };\n        List&lt;string&gt; fruits = new List&lt;string&gt; { &quot;apple&quot;, &quot;banana&quot;, &quot;cherry&quot;, &quot;date&quot; };\n        List&lt;int&gt; moreNumbers = new List&lt;int&gt; { 5, 6, 7, 8, 9 };\n\n        Console.WriteLine(&quot;=== \u4f7f\u7528 Where \u8fdb\u884c\u57fa\u672c\u7684 LINQ \u8fc7\u6ee4 ===&quot;);\n\n        \/\/ 1. \u57fa\u672c\u7684 Where \u8fc7\u6ee4\n        var evenNumbers = numbers.Where(x =&gt; x % 2 == 0);\n        Console.WriteLine(&quot;\u5076\u6570: &quot; + string.Join(&quot;, &quot;, evenNumbers));\n        \/\/ SQL: SELECT Number FROM Numbers WHERE Number % 2 = 0;\n        \/\/ \u7ed3\u679c: 2, 4\n\n        \/\/ 2. \u590d\u6742\u7684 Where \u8fc7\u6ee4\n        var evenAndGreaterThan3 = numbers.Where(x =&gt; x % 2 == 0 &amp;&amp; x &gt; 3);\n        Console.WriteLine(&quot;\u5076\u6570\u4e14\u5927\u4e8e 3: &quot; + string.Join(&quot;, &quot;, evenAndGreaterThan3));\n        \/\/ SQL: SELECT Number FROM Numbers WHERE Number % 2 = 0 AND Number &gt; 3;\n        \/\/ \u7ed3\u679c: 4\n\n        Console.WriteLine(&quot;\\n=== C# \u4e2d\u7684 LINQ Select \u64cd\u4f5c ===&quot;);\n\n        \/\/ 3. \u7b80\u5355\u7684 Select \u64cd\u4f5c\n        var same = numbers.Select(n =&gt; n);\n        Console.WriteLine(&quot;\u76f8\u540c\u7684\u6570\u5b57: &quot; + string.Join(&quot;, &quot;, same));\n        \/\/ SQL: SELECT Number FROM Numbers;\n        \/\/ \u7ed3\u679c: 1, 2, 3, 4, 5\n\n        \/\/ 4. \u5e26\u53d8\u6362\u7684 Select \u64cd\u4f5c\n        var doubled = numbers.Select(x =&gt; x * 2);\n        Console.WriteLine(&quot;\u500d\u589e\u540e\u7684\u6570\u5b57: &quot; + string.Join(&quot;, &quot;, doubled));\n        \/\/ SQL: SELECT Number * 2 AS DoubledNumber FROM Numbers;\n        \/\/ \u7ed3\u679c: 2, 4, 6, 8, 10\n\n        \/\/ 5. \u5e26\u533f\u540d\u7c7b\u578b\u7684 Select \u64cd\u4f5c\n        var squares = numbers.Select(x =&gt; new { Number = x, Square = x * x });\n        Console.WriteLine(&quot;\u5e73\u65b9\u6570: &quot; + string.Join(&quot;, &quot;, squares));\n        \/\/ SQL: SELECT Number, Number * Number AS Square FROM Numbers;\n        \/\/ \u7ed3\u679c: { Number = 1, Square = 1 }, { Number = 2, Square = 4 }, \u7b49\u7b49\u3002\n\n        Console.WriteLine(&quot;\\n=== \u4f7f\u7528 LINQ \u7684 OrderBy \u64cd\u4f5c ===&quot;);\n\n        \/\/ 6. \u57fa\u672c\u7684 OrderBy\n        var orderedNumbers = numbers.OrderBy(n =&gt; n);\n        Console.WriteLine(&quot;\u5347\u5e8f\u6392\u5217\u7684\u6570\u5b57: &quot; + string.Join(&quot;, &quot;, orderedNumbers));\n        \/\/ SQL: SELECT Number FROM Numbers ORDER BY Number ASC;\n        \/\/ \u7ed3\u679c: 1, 2, 3, 4, 5\n\n        \/\/ 7. \u4f7f\u7528 OrderByDescending \u6392\u5e8f\n        var descendingNumbers = numbers.OrderByDescending(n =&gt; n);\n        Console.WriteLine(&quot;\u964d\u5e8f\u6392\u5217\u7684\u6570\u5b57: &quot; + string.Join(&quot;, &quot;, descendingNumbers));\n        \/\/ SQL: SELECT Number FROM Numbers ORDER BY Number DESC;\n        \/\/ \u7ed3\u679c: 5, 4, 3, 2, 1\n\n        \/\/ 8. \u591a\u91cd\u6392\u5e8f\u6761\u4ef6\n        var orderedFruits = fruits.OrderBy(x =&gt; x.Length).ThenBy(x =&gt; x);\n        Console.WriteLine(&quot;\u6309\u957f\u5ea6\u548c\u5b57\u6bcd\u987a\u5e8f\u6392\u5e8f\u7684\u6c34\u679c: &quot; + string.Join(&quot;, &quot;, orderedFruits));\n        \/\/ SQL: SELECT Name FROM Fruits ORDER BY LENGTH(Name) ASC, Name ASC;\n        \/\/ \u7ed3\u679c: date, apple, banana, cherry\n\n        Console.WriteLine(&quot;\\n=== LINQ \u7684 GroupBy \u64cd\u4f5c ===&quot;);\n\n        \/\/ 9. GroupBy \u64cd\u4f5c\n        var groupedByRemainder = numbers.GroupBy(x =&gt; x % 3);\n        foreach (var group in groupedByRemainder)\n        {\n            Console.WriteLine($&quot;\u4f59\u6570\u4e3a {group.Key} \u7684\u6570\u5b57: {string.Join(&quot;, &quot;, group)}&quot;);\n        }\n        \/\/ SQL: SELECT Number % 3 AS Remainder, Number FROM Numbers GROUP BY Number % 3;\n        \/\/ \u7ed3\u679c\uff1a\n        \/\/ \u4f59\u6570\u4e3a 1 \u7684\u6570\u5b57: 1, 4\n        \/\/ \u4f59\u6570\u4e3a 2 \u7684\u6570\u5b57: 2, 5\n        \/\/ \u4f59\u6570\u4e3a 0 \u7684\u6570\u5b57: 3\n\n        Console.WriteLine(&quot;\\n=== \u4f7f\u7528 LINQ \u7684 Join \u64cd\u4f5c ===&quot;);\n\n        List&lt;Student&gt; students = new List&lt;Student&gt;\n    {\n        new Student { ID = 1, Name = &quot;Alice&quot;, Age = 21 },\n        new Student { ID = 2, Name = &quot;Bob&quot;, Age = 23 },\n        new Student { ID = 3, Name = &quot;Charlie&quot;, Age = 20 }\n    };\n\n        List&lt;Course&gt; courses = new List&lt;Course&gt;\n    {\n        new Course { StudentID = 1, CourseName = &quot;Math&quot; },\n        new Course { StudentID = 1, CourseName = &quot;Physics&quot; },\n        new Course { StudentID = 2, CourseName = &quot;Chemistry&quot; },\n        new Course { StudentID = 3, CourseName = &quot;Biology&quot; }\n    };\n\n        \/\/ 10. \u5185\u8fde\u63a5\u64cd\u4f5c\uff08Inner Join\uff09\n        var studentCourses = students.Join(\n            courses,\n            student =&gt; student.ID,\n            course =&gt; course.StudentID,\n            (student, course) =&gt; new { student.Name, course.CourseName }\n        );\n\n        Console.WriteLine(&quot;\u5b66\u751f\u4e0e\u8bfe\u7a0b (\u5185\u8fde\u63a5):&quot;);\n        foreach (var item in studentCourses)\n        {\n            Console.WriteLine($&quot;{item.Name} \u6b63\u5728\u5b66\u4e60 {item.CourseName}&quot;);\n        }\n        \/\/ SQL: SELECT s.Name, c.CourseName FROM Students s INNER JOIN Courses c ON s.ID = c.StudentID;\n        \/\/ \u7ed3\u679c:\n        \/\/ Alice \u6b63\u5728\u5b66\u4e60 Math\n        \/\/ Alice \u6b63\u5728\u5b66\u4e60 Physics\n        \/\/ Bob \u6b63\u5728\u5b66\u4e60 Chemistry\n        \/\/ Charlie \u6b63\u5728\u5b66\u4e60 Biology\n\n        Console.WriteLine(&quot;\\n=== C# \u4e2d\u7684 LINQ \u96c6\u5408\u64cd\u4f5c ===&quot;);\n\n        \/\/ 11. \u5e76\u96c6\u64cd\u4f5c\uff08Union\uff09\n        var union = numbers.Union(moreNumbers);\n        Console.WriteLine(&quot;\u5e76\u96c6: &quot; + string.Join(&quot;, &quot;, union));\n        \/\/ SQL: SELECT Number FROM Numbers UNION SELECT Number FROM MoreNumbers;\n        \/\/ \u7ed3\u679c: 1, 2, 3, 4, 5, 6, 7, 8, 9\n\n        \/\/ 12. \u4ea4\u96c6\u64cd\u4f5c\uff08Intersect\uff09\n        var intersection = numbers.Intersect(moreNumbers);\n        Console.WriteLine(&quot;\u4ea4\u96c6: &quot; + string.Join(&quot;, &quot;, intersection));\n        \/\/ SQL: SELECT Number FROM Numbers INTERSECT SELECT Number FROM MoreNumbers;\n        \/\/ \u7ed3\u679c: 5\n\n        \/\/ 13. \u5dee\u96c6\u64cd\u4f5c\uff08Except\uff09\n        var except = numbers.Except(moreNumbers);\n        Console.WriteLine(&quot;\u5dee\u96c6: &quot; + string.Join(&quot;, &quot;, except));\n        \/\/ SQL: SELECT Number FROM Numbers EXCEPT SELECT Number FROM MoreNumbers;\n        \/\/ \u7ed3\u679c: 1, 2, 3, 4\n\n        Console.WriteLine(&quot;\\n=== LINQ \u5143\u7d20\u64cd\u4f5c\u6559\u7a0b ===&quot;);\n\n        \/\/ 14. First \u64cd\u4f5c\n        var first = numbers.First();\n        Console.WriteLine(&quot;\u7b2c\u4e00\u4e2a\u6570\u5b57: &quot; + first);\n        \/\/ SQL: SELECT TOP 1 Number FROM Numbers;\n        \/\/ \u7ed3\u679c: 1\n\n        \/\/ 15. \u5e26\u6761\u4ef6\u7684 First \u64cd\u4f5c\n        var firstEven = numbers.First(n =&gt; n % 2 == 0);\n        Console.WriteLine(&quot;\u7b2c\u4e00\u4e2a\u5076\u6570: &quot; + firstEven);\n        \/\/ SQL: SELECT TOP 1 Number FROM Numbers WHERE Number % 2 = 0;\n        \/\/ \u7ed3\u679c: 2\n\n        \/\/ 16. FirstOrDefault \u64cd\u4f5c\n        var firstOver10 = numbers.FirstOrDefault(n =&gt; n &gt; 10);\n        Console.WriteLine(&quot;\u7b2c\u4e00\u4e2a\u5927\u4e8e 10 \u7684\u6570\u5b57 (\u6216\u9ed8\u8ba4\u503c): &quot; + firstOver10);\n        \/\/ SQL: SELECT TOP 1 Number FROM Numbers WHERE Number &gt; 10;\n        \/\/ \u7ed3\u679c: 0\uff08\u9ed8\u8ba4\u503c\uff09\n\n        \/\/\n\n        \/\/ 17. Last \u64cd\u4f5c\n        var last = numbers.Last();\n        Console.WriteLine(&quot;\u6700\u540e\u4e00\u4e2a\u6570\u5b57: &quot; + last);\n        \/\/ SQL: SELECT TOP 1 Number FROM Numbers ORDER BY Number DESC;\n        \/\/ \u7ed3\u679c: 5\n\n        \/\/ 18. LastOrDefault \u64cd\u4f5c\n        var lastOver10 = numbers.LastOrDefault(n =&gt; n &gt; 10);\n        Console.WriteLine(&quot;\u6700\u540e\u4e00\u4e2a\u5927\u4e8e 10 \u7684\u6570\u5b57 (\u6216\u9ed8\u8ba4\u503c): &quot; + lastOver10);\n        \/\/ SQL: SELECT TOP 1 Number FROM Numbers WHERE Number &gt; 10 ORDER BY Number DESC;\n        \/\/ \u7ed3\u679c: 0\uff08\u9ed8\u8ba4\u503c\uff09\n        \/\/ 19. ElementAt\n        var elementAt = numbers.ElementAt(2);\n        Console.WriteLine(&quot;Element at index 2: &quot; + elementAt);\n        \/\/ SQL equivalent would require ROW_NUMBER() or similar\n        \/\/ Result: 3\n\n        Console.WriteLine(&quot;\\n=== 101 LINQ Examples: Quantifier Operations ===&quot;);\n\n        \/\/ 20. Any\n        bool hasEven = numbers.Any(n =&gt; n % 2 == 0);\n        Console.WriteLine(&quot;Has even numbers: &quot; + hasEven);\n        \/\/ SQL: SELECT CASE WHEN EXISTS (SELECT 1 FROM Numbers WHERE Number % 2 = 0) THEN 1 ELSE 0 END;\n        \/\/ Result: True\n\n        \/\/ 21. All\n        bool allPositive = numbers.All(n =&gt; n &gt; 0);\n        Console.WriteLine(&quot;All numbers positive: &quot; + allPositive);\n        \/\/ SQL: SELECT CASE WHEN NOT EXISTS (SELECT 1 FROM Numbers WHERE NOT (Number &gt; 0)) THEN 1 ELSE 0 END;\n        \/\/ Result: True\n\n        \/\/ 22. Contains\n        bool contains3 = numbers.Contains(3);\n        Console.WriteLine(&quot;Contains 3: &quot; + contains3);\n        \/\/ SQL: SELECT CASE WHEN EXISTS (SELECT 1 FROM Numbers WHERE Number = 3) THEN 1 ELSE 0 END;\n        \/\/ Result: True\n\n        Console.WriteLine(&quot;\\n=== LINQ Partitioning Tutorial ===&quot;);\n\n        \/\/ 23. Take\n        var firstThree = numbers.Take(3);\n        Console.WriteLine(&quot;First 3 numbers: &quot; + string.Join(&quot;, &quot;, firstThree));\n        \/\/ SQL: SELECT TOP 3 Number FROM Numbers;\n        \/\/ Result: 1, 2, 3\n\n        \/\/ 24. Skip\n        var skipTwo = numbers.Skip(2);\n        Console.WriteLine(&quot;Skip first 2 numbers: &quot; + string.Join(&quot;, &quot;, skipTwo));\n        \/\/ SQL: SELECT Number FROM Numbers ORDER BY (SELECT NULL) OFFSET 2 ROWS;\n        \/\/ Result: 3, 4, 5\n\n        \/\/ 25. TakeWhile\n        var takeWhileLessThan4 = numbers.TakeWhile(n =&gt; n &lt; 4);\n        Console.WriteLine(&quot;Take while &lt; 4: &quot; + string.Join(&quot;, &quot;, takeWhileLessThan4));\n        \/\/ SQL: SELECT Number FROM Numbers WHERE Number &lt; 4;\n        \/\/ Result: 1, 2, 3\n\n        \/\/ 26. SkipWhile\n        var skipWhileLessThan4 = numbers.SkipWhile(n =&gt; n &lt; 4);\n        Console.WriteLine(&quot;Skip while &lt; 4: &quot; + string.Join(&quot;, &quot;, skipWhileLessThan4));\n        \/\/ SQL: SELECT Number FROM Numbers WHERE Number &gt;= 4;\n        \/\/ Result: 4, 5\n    }\n}\n\n\/\/ \u5b66\u751f\u7c7b\nclass Student\n{\n    public int ID { get; set; }\n    public string Name { get; set; }\n    public int Age { get; set; }\n}\n\n\/\/ \u8bfe\u7a0b\u7c7b\nclass Course\n{\n    public int StudentID { get; set; }\n    public string CourseName { get; set; }\n}<\/code><\/pre>\n<h2>\u5728 C# \u4e2d\u4f7f\u7528 LINQ\uff1a\u5173\u952e\u64cd\u4f5c\u7b26\u89e3\u6790<\/h2>\n<p>\u4f7f\u7528 Where \u8fdb\u884c\u8fc7\u6ee4<br \/>\nWhere \u64cd\u4f5c\u7b26\u6839\u636e\u8c13\u8bcd\u8fc7\u6ee4\u96c6\u5408\uff1a<\/p>\n<pre><code>var evenNumbers = numbers.Where(n =&gt; n % 2 == 0);<\/code><\/pre>\n<p>\u4f7f\u7528 Select \u8fdb\u884c\u8f6c\u6362<br \/>\nSelect \u64cd\u4f5c\u7b26\u5bf9\u6bcf\u4e2a\u5143\u7d20\u8fdb\u884c\u8f6c\u6362\uff1a<\/p>\n<pre><code>var doubled = numbers.Select(n =&gt; n * 2);<\/code><\/pre>\n<p>\u4f7f\u7528 OrderBy \u8fdb\u884c\u6392\u5e8f<br \/>\nOrderBy \u64cd\u4f5c\u7b26\u6309\u5347\u5e8f\u6392\u5e8f\u5143\u7d20\uff1a<\/p>\n<pre><code>var orderedNumbers = numbers.OrderBy(n =&gt; n);<\/code><\/pre>\n<p>\u4f7f\u7528 GroupBy \u8fdb\u884c\u5206\u7ec4<br \/>\nGroupBy \u64cd\u4f5c\u7b26\u6839\u636e\u952e\u5c06\u5143\u7d20\u5206\u7ec4\uff1a<\/p>\n<pre><code>var groupedByRemainder = numbers.GroupBy(n =&gt; n % 3);<\/code><\/pre>\n<p>\u4f7f\u7528 Join \u8fde\u63a5\u96c6\u5408<br \/>\nJoin \u64cd\u4f5c\u7b26\u5c06\u4e24\u4e2a\u96c6\u5408\u4e2d\u7684\u5143\u7d20\u8fdb\u884c\u8fde\u63a5\uff1a<\/p>\n<pre><code>var studentCourses = students.Join(courses,\n    student =&gt; student.ID,\n    course =&gt; course.StudentID,\n    (student, course) =&gt; new { student.Name, course.CourseName });\n<\/code><\/pre>\n<h2>\u7ed3\u8bba<\/h2>\n<p>\u6211\u6700\u559c\u6b22 LINQ \u7684\u5730\u65b9\u662f\uff0c\u5b83\u8ba9\u6211\u66f4\u591a\u5730\u5173\u6ce8\u6211\u9700\u8981\u4ec0\u4e48\u6570\u636e\uff0c\u800c\u4e0d\u662f\u600e\u4e48\u53bb\u83b7\u53d6\u5b83\u3002\u50cf Where\u3001Select \u548c OrderBy \u8fd9\u4e9b\u64cd\u4f5c\u7b26\u80fd\u591f\u8fde\u8d2f\u5730\u4e32\u8054\u5728\u4e00\u8d77\uff0c\u4f7f\u7528\u8d77\u6765\u975e\u5e38\u81ea\u7136\uff0c\u5e76\u4e14\u6e05\u6670\u5730\u8868\u8fbe\u4e86\u6211\u7684\u610f\u56fe\u3002\u5f53\u6211\u5728\u9605\u8bfb\u5305\u542b LINQ \u7684\u4ee3\u7801\u65f6\uff0c\u6211\u80fd\u591f\u5feb\u901f\u7406\u89e3\u5b83\u7684\u76ee\u6807\u3002<\/p>\n<p>\u867d\u7136\u6211\u4ecd\u5728\u5b66\u4e60\uff0c\u4f46 LINQ \u5df2\u7ecf\u6210\u4e3a\u6211\u5199 C# \u4ee3\u7801\u7684\u4e00\u4e2a\u91cd\u8981\u90e8\u5206\u3002\u65e0\u8bba\u662f\u5904\u7406\u7b80\u5355\u7684\u5217\u8868\u3001\u590d\u6742\u7684\u5bf9\u8c61\uff0c\u8fd8\u662f\u6570\u636e\u5e93\u67e5\u8be2\uff0cLINQ \u90fd\u63d0\u4f9b\u4e86\u4e00\u79cd\u4e00\u81f4\u7684\u65b9\u5f0f\u6765\u8868\u8fbe\u6211\u7684\u6570\u636e\u9700\u6c42\uff0c\u8fd9\u5bf9\u6211\u6765\u8bf4\u975e\u5e38\u6709\u4ef7\u503c\u3002\u6211\u5f88\u671f\u5f85\u7ee7\u7eed\u63a2\u7d22\u66f4\u591a LINQ \u64cd\u4f5c\uff0c\u53d1\u73b0\u7528\u8fd9\u4e2a\u5f3a\u5927\u7684\u5de5\u5177\u89e3\u51b3\u95ee\u9898\u7684\u65b0\u65b9\u6cd5\u3002<\/p>\n<p>\u6ce8\uff1a\u8f6c\u8f7d\u6587\u7ae0\uff0c\u5927\u5bb6\u89c9\u5f97\u4e0a\u9762\u6587\u7ae0\u5982\u4f55\uff1f\u6b22\u8fce\u7559\u8a00\u8ba8\u8bba\u3002<\/p>\n<p>\u672c\u6587\u4f7f\u7528chatgpt\u534f\u52a9\u7ffb\u8bd1\u3002<\/p>\n<p>\u4f5c\u8005\uff1aSridharan D\uff0c\u7248\u6743\u5f52\u539f\u4f5c\u8005Sridharan D\u6240\u6709<\/p>\n<p>\u539f\u6587\u94fe\u63a5\uff1a<br \/>\nc-sharpcorner.com\/article\/linq-in-c-sharp-tutorial-for-beginners-101-c-sharp-linq-operations\/<\/p>\n<p><a href=\"https:\/\/mp.weixin.qq.com\/s\/NJsZcqfGlHwSpSSEsu7Rpw\">https:\/\/mp.weixin.qq.com\/s\/NJsZcqfGlHwSpSSEsu7Rpw<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>C#\u4e2dLINQ\u57fa\u7840\uff1a101\u4e2a\u5e38\u7528LINQ\u64cd\u4f5c LINQ\uff08\u8bed\u8a00\u96c6\u6210\u67e5\u8be2\uff09\u662f C# \u4e2d\u7684\u4e00\u4e2a\u9769\u547d\u6027\u7279\u6027\uff0c\u5b83\u5f7b\u5e95\u6539\u53d8\u4e86\u5f00\u53d1\u4eba\u5458\u5904\u7406\u6570\u636e\u7684\u65b9\u5f0f\u3002\u65e0\u8bba\u4f60\u662f\u521a\u521a\u5f00\u59cb\u5b66\u4e60 C#\uff0c\u8fd8\u662f\u5e0c\u671b\u63d0\u9ad8\u7f16\u7801\u6280\u80fd\uff0c\u638c\u63e1 LINQ \u90fd\u5c06\u663e\u8457\u63d0\u5347\u4f60\u7684\u5de5\u4f5c\u6548\u7387\u548c\u4ee3\u7801\u8d28\u91cf\u3002 \u4ec0\u4e48\u662f C# \u4e2d\u7684 LINQ\uff1f LINQ \u5c06\u67e5\u8be2\u529f\u80fd\u76f4\u63a5\u96c6\u6210\u5230 C# \u8bed\u8a00\u4e2d\uff0c\u63d0\u4f9b\u4e86\u4e00\u79cd\u7edf\u4e00\u7684\u65b9\u5f0f\u6765\u67e5\u8be2\u4e0d\u540c\u6765\u6e90\u7684\u6570\u636e\u2014\u2014\u65e0\u8bba\u662f\u6570\u7ec4\u3001\u96c6\u5408\u3001\u6570\u636e\u5e93\u3001XML \u8fd8\u662f\u5176\u4ed6\u683c\u5f0f\u3002\u901a\u8fc7\u5728 C# \u4e2d\u4f7f\u7528 LINQ\uff0c\u4f60\u4e0d\u518d\u9700\u8981\u5b66\u4e60\u591a\u79cd\u67e5\u8be2\u8bed\u8a00\u6765\u5904\u7406\u4e0d\u540c\u7684\u6570\u636e\u683c\u5f0f\u3002 \/\/ \u57fa\u672c\u7684 LINQ \u67e5\u8be2\u793a\u4f8b var numbers = new List&lt;int&gt; { 1, 2, 3, 4, 5 }; var evenNumbers = numbers.Where(n =&gt; n % 2 == 0); \/\/ \u7ed3\u679c\uff1a2, 4 101 \u4e2a C# \u4e2d\u5e38\u7528\u7684 LINQ \u64cd\u4f5c \u8ba9\u6211\u4eec\u6765\u63a2\u8ba8\u4e00\u4e9b\u6700\u5e38\u7528\u7684 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[20],"class_list":["post-771","post","type-post","status-publish","format-standard","hentry","category-csharp","tag-linq"],"_links":{"self":[{"href":"https:\/\/diji.net\/index.php?rest_route=\/wp\/v2\/posts\/771","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/diji.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/diji.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/diji.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/diji.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=771"}],"version-history":[{"count":0,"href":"https:\/\/diji.net\/index.php?rest_route=\/wp\/v2\/posts\/771\/revisions"}],"wp:attachment":[{"href":"https:\/\/diji.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=771"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/diji.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=771"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/diji.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=771"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}