C# LINQ

LINQ

LINQ 全名 Language-Integrated Query, 於 C# 3.0 引入, 让程序设计师能使用一致性的语法来查询不同的资料来源, 如查询阵列、集合、DataSet、XML、SQL Server 资料库等等
语法

var 变数 = from 范围变数 in 集合 orderby 栏位名称 where 条件 select 范围变数[.栏位]

一些例子

using System;
using System.Collections.Generic;
using System.Linq;

string sentence = "I love cats";
string[] catNames = {"Lucky", "Bella", "Luna", "Oreo", "Simba", "Toby", "Loki", "Oscar"};
int[] numbers = {5, 6, 3, 2, 1, 7, 8, 234, 54, 14, 653, 3, 4, 5, 6, 7};
var getTheNumbers = from number in numbers 
                    where number < 5 
                    orderby number descending
                    select number;
Console.WriteLine(string.Join(",", getTheNumbers));

List<int> newNumbers = new List<int>();

foreach (var number in numbers)
{
  if (number < 5)
  {
    newNumbers.Add(number);
  }
}

Console.WriteLine(string.Join(",", newNumbers));

var catsWithA = from cat in catNames
                where cat.Contains("a") && (cat.Length < 5)
                select cat;
Console.WriteLine(string.Join(",", catsWithA));

internal class Person
{
  private string name;
  private int height;
  private int weight;
  
  private Gender gender;
  
  public string Name {get; set;}
  public int Height {get; set;}
  public int Weight {get; set;}
  public Gender Gender {get; set;}
  
  public Person(string name, int height, int weight, Gender gender)
  {
    this.Name = name;
    this.Height = height;
    this.Weight = weight;
    this.Gender = gender;
  }
}

internal enum Gender
{
  Male,
  Female
}

List<Person> people = new List<Person>()
{
  new Person("Tod", 180, 70, Gender.Female),
  new Person("Kyle", 164, 77, Gender.Male),
  new Person("Anna", 164, 77, Gender.Male)
};

var fourCharPeople = from p in people
                     where (p.Name.Length == 4)
                     orderby p.Weight
                     select p;

foreach (var item in fourCharPeople)
{
  Console.WriteLine($"Name: {item.Name}, Weight: {item.Weight}");
}

var

从 c# 3.0 开始引入, 在方法范围内, 可以使用关键字 var 宣告变数, 这是有隐含的 "type", 也是强型别, 但是由编译器来判断型别, 例

// 以下宣告功能一样
var i = 100;  // Implicitly typed
int i = 100;  // Explicitly typed

<<:  Day 09 回覆emoji讯息

>>:  【从实作学习ASP.NET Core】Day09 | 後台 | 图片上传与预览

[day24]Vue实作-交易建立页面_完成版

调整 目前虽然可以送交易,但还没有解析回覆的结果,趁连假第一天来处理一下!! 解析订单送出後回覆之资...

[Day18] 长尾问题 (long tail problem)

到现在为止,您的设计应该涵盖大多数用户将遵循的对话流。 现在是时候关注对话流的长尾问题了。 想想您...

Ruby幼幼班--Two Sum II

快忘记自己传教过哪些K-pop了.... Two Sum II 题目连结:https://leet...

食谱资料库架构图

MySQL 学习 由於Icebear在学习创建资料库时,FORGIEN KEY 後面都会有ON DE...

云端资安之Azure篇(Microsoft)

云端系列最後一篇~ 近年来Microsoft非常致力推广的Azure。 Microsoft真的是不断...