C Linq Lambda 常用語法

2021-10-10 16:48:06 字數 3162 閱讀 4812

去重,以list中某元素為基準,去除次元素相同的記錄

listlistbm_distinct = listallmouldbm.where((m, i) => listallmouldbm.findindex(z => z.mouldno == m.mouldno) == i).tolist(); //去除mouldno相同的記錄
以list中某元素為查詢條件,判斷list中是否存在資料

list.exists(x => x.ngtype == 1);  //判斷list是否存在ngtype為1的元素
list進行sum或者其他運算,剔除值中為null的資料

var cycleday = list.where(u => u.croptypeid ==typeid).select(p => p.cycleday).defaultifempty().sum();

var cycleday = list.where(u => u.croptypeid == typeid).sum(p => (p.cycleday == null ? 0 : p.cycleday));

datatable中使用select()方法找出interval最大的那條資料

datarow otmp = dt.select("interval = max(interval)");
datatable中select()方法篩選不等於某條件的資料(使用"<>",不能使用「!=」,會報錯)

datarow drs = dt.select(string.format(" type<> '' ","2"));
以某字段為查詢條件,查詢datatable中符合條件的資料

datarow drs = dt.asenumerable().where(m => m["name"].equals("小明")).toarray();   //找出datatable中name為小明的資料
查詢datarow中某列的值,取datarow中第乙個值

var unloadtime = drs.asenumerable().select(t => t.field("unloadtime")).firstordefault().tostring();
陣列中以多個字段分組,再以某欄位公升序排序,再取第乙個(以model,pattern分組,再以accepttime公升序排序)

var arrflowdata = arrmesflowdata.asenumerable().groupby(t => new ).select(t => t.orderby(x => x.accepttime).firstordefault());
list中以hours降序,再以dsscode公升序排序(先按hours降序,如果hours相同再按dsscode公升序。如果hours為null或者為空,排序會出現混亂,待解決 o(≧口≦)o)

listlist = dmdxdetail.listmouldload.orderbydescending(t => t.hours).thenby(t => t.dsscode).tolist();
從datatable中取出某列的值並返回乙個list集合

var list =dt.asenumerable().select(x => convert.toint32(x["列名"])).tolist();
datatable使用where篩選並排序(根據no和code篩選,再根據date和time降序排序) 

datarow drs = dt.asenumerable().where(t => t["no"].equals("fu123456") && t["code"].equals("lfmj03")).orderbydescending(t => t["date"]).thenbydescending(t => t["time"]).toarray();
分組

// 實現多key分組的擴充套件函式版本

var sums = emplist

.groupby(x => new )

.select(group => new );

foreach (var employee in sums)

// 實現多key分組的lambda版本

var sums2 = from emp in emplist

group emp by new into g

select new ;

foreach (var employee in sums)

//充分利用了匿名型別

varlistbyowner= list.groupby(l => l.owner)

.select(lg =>

new);

var q =from b in listofboxes

group b by b.ownerinto g

selectnew

;

連線查詢

//linq實現左連線

dataclasses1datacontext db = new dataclasses1datacontext();

var leftjoinsql = from student in db.student

join book in db.book on student.id equals book.studentid into temp

from tt in temp.defaultifempty()

select new

;//linq實現右連線

dataclasses1datacontext db=new dataclasses1datacontext();

var rightjoinsql = from book in db.book

join stu in db.student on book.studentid equals stu.id into jointemp

from tmp in jointemp.defaultifempty()

select new ;

mysql常用語法 MySQL常用語法

更新資料 update 表名 set 健名 更改的值 where 建 刪除資料 delete from 表名 where 索引 create index 索引名稱 on 表名 鍵名 建立試圖 create view 檢視名 鍵,鍵 as select matchno,abs won lost fro...

mysql基本常用語法 mysql 常用語法

1.1.開啟 service mysql start 1.2.關閉 service mysql stop 1.3.重啟 service mysql restart 2.1.密碼明文 語法 mysql u使用者名稱 p使用者密碼 舉例 mysql uroot p123456 2.2.密碼密文 語法 m...

wiki常用語法

公司啟用了streber執行部分專案管理工作。streber基於wiki系統建立。在streber中,我們可以建立專案 project 可以為專案建立milestone task等等。與其他專案管理系統一樣,可以為每乙個task分配資源,指定執行時間。由於streber基於wiki組建,具備了wik...