標籤:
LINQ可以很方便的對資料來源進行篩選、排序和分組操作。
格式 :from …… 例: from customer(範圍變數) in customers(資料來源)
where …… where customer.Firstname=="sadas" (篩選的條件)
select …… select customer (映射,具體要選的主體或屬性)
LINQ查詢式可以立刻執行
foreach (Customer customer in result) {……;}
customers[3].FirstName = "Donna";
foreach (Customer customer in result){…;} rusult將立刻改變
如果不想改變,可以預存變化前的值,可以使用tolist() toarry()
static void Main()
{
List<Customer> customers = CreateCustomerList();
IEnumerable<Customer> result = from customer in customers
where customer.FirstName == "Donna“ select customer;
List<Customer> cachedResult = result.ToList<Customer>(); //存值,需要之前的值就去查之前存的地方。
foreach (Customer customer in cachedResult){…;}
customers[3].FirstName = "Donna";
Console.WriteLine("FirstName == \"Donna\" (take two)");
foreach (Customer customer in cachedResult){…;}
}
串連 join
[data source 1] join [data source 2] on [join condition]
將兩個資料來源按照一定條件串連在一起
customer in customers join address in addresses on customer.Name equals address.Name;
排序 orderby
var result =from customer in Customers
orderby customer.LastName
select customer; //升序排Lastname中資料
var 關鍵字能夠代替局部變數的類型
foreach (var ca in result) //
{
Console.WriteLine(string.Format("{0}\nAddress: {1}",
ca.Customer, ca.Address));
}
分組 group
var result = from address in addresses
group address by address.Name;//按照條件 address.Name 分組
foreach (var gp in result)
{
Console.WriteLine("{0}", gp.Key); //~.key代表分組條件,即address.Name
foreach (var a in gp)
Console.WriteLine("\t{0}", a);
}
C#課後小試6