LINQ

資料來源: 一個結合where、group、orderby的linq(http://yangxinde.pixnet.net/blog/post/31357272-%E4%B8%80%E5%80%8B%E7%B5%90%E5%90%88where%E3%80%81group%E3%80%81orderby%E7%9A%84linq)

保哥線上講堂:LINQ 快速上手(https://www.slideshare.net/WillHuangTW/linq-46081487)

ASP.NET MVC-LINQ 之 insert update select(https://dotblogs.com.tw/newmonkey48/2013/09/16/118726)

List<Object> arr= new List<Object>();

using (DataBaseDataContext db = new DataBaseDataContext())
{
    //where  like 
    arrR = (from o in db.table
            where o.field.Contains("text")
    //group
    /*where o.field== "text"
    group o.field1 new Obj (){
            Attribute1 = o.field1,
            Attribute2 = o.field2,
            Attribute3 = o.field3
    } into g
    //orderby g.Key.field1
    select g.Key).ToList();*/
    select o).ToList();
}

Select

第一種方法如上

第二種方法

var result = (from p in db.table
                select p);
if(true)
        result = query.Where(o=>o.p.ID == 1);

var entity = query.select(o=>o.p.ID).FirstOrDefault();

想要串接多個條件

List<Object> arr= new List<Object>();

using (DataBaseDataContext db = new DataBaseDataContext())
{ 
    arrR = (from o in db.table
            where o.field.Contains("text") && o.field2 = false

    select o).ToList();
}

Insert

table row = new table();
row.ID = 1;
row.Name = "Brian";
db.table.Add(row);
db.SaveChanges();

Update

select出來之後,直接對值做修改,再儲存起來。

var query = (from o in db.table
                where o.id = "abc123"
                select o).FirstOrDefault();
query.name = "Brian"; //修改姓名
db.SaveChanges();

Delete

Join

在Join時,on的比較只能用 [equals] 不能用 [==]

var query = (from o in db.table
                join b in db.table2 on a.ID equals b.ID
                select new{a})

題外話

LINQ 不只能查詢SQL,還可以查詢清單、陣列 等等。

WHERE

假如我們想要取得清單中的某個物件,可利用下列方式。

List<Class1> ls = Class1.getList();
string str = "Brian";
Class1 obj = ls.Where(o=>o.Name == str).FirstOrDefault();

order by

.OrderByDescending(o=>o.SN)

取幾筆

.Take(count)

整數清單 轉 字串清單

List<int> to List<string>


.select(o=>o.toString()).toList()

Last updated