linq基本語法及其示例
說明:1、在未作任何說明的情況下,以下用到的db變數都是datacontext的例項物件,宣告語法類似如下:
using (bp_dataclassesdatacontext db = new bp_dataclassesdatacontext(connectionstrings.getinstance(「zj」).con))
//code
2、預設q為iqueryable型別變數
簡單查詢:
var q = from p in db.view_pretestresultauditlist
select p;
簡單條件查詢:
方式一:直接使用where關鍵字
var q = from c in db.view_prtestlist
where c.ftestmanid.equals(usercontext.currentuser.fid)
select c;
方式二:使用lambda 表示式
var q = db.toriinfoautomemory.where(c => c.fsamplename == samplename);
使用 &&和|| 帶代替and或or關鍵字:
var entity = db.tsampleoriginalinfo.firstordefault(c => c.ffromid.equals(fromid) && c.fsampleid.equals(sampleid));
like模糊條件查詢:
//使用c#中的contains關鍵字代替sql中的like關鍵字
q = q.where(c => c.ftaskcode.contains(condition.name));
in包含查詢:
/// string
var certi = (from c in db.tmscertificate
where certificateids.tolist().contains(c.fid.tostring())
select c).tolist();
等價於:select * from tmscertificate where fid in /* certificateids */
skip和take實現分頁查詢:
var q = from c in db.view_prtestlist
where c.ftestmanid.equals(usercontext.currentuser.fid)
select c;
twi.data = (q.skip(paging.startindex).take(paging.pagesize)).tolist();
//其中startindex:跳過的系列中指定的條數
// pagesize:每頁顯示條數(記錄數)
distinct方法去除重複:
var p = (from c in dc.tsampleoriginalinfo
where sampleids.contains(c.fsampleid.tostring())
select new
).distinct();
查詢指定列使new構造集合:
var p = (from c in dc.tsampleoriginalinfo
where sampleids.contains(c.fsampleid.tostring())
select new
).distinct();
join連線查詢:詳見下面的【join查詢例項】
//此處省略……
firstordefault查詢滿足條件的第一條記錄或不存在是返回null,不發生異常:
foreach (var fromid in fromids)
var entity = db.tsampleoriginalinfo.firstordefault(c => c.ffromid.equals(fromid) && c.fsampleid.equals(sampleid));
if (entity != null)
linq to sql 的重要方法:submitchanges方法:
無論您對物件做了多少項更改,都只是在更改記憶體中的副本。您並未對資料庫中的實際資料做任何更改。直到您對 datacontext 顯式呼叫 submitchanges方法,您所做的更改才會傳輸到伺服器。
db.submitchanges();
新增/刪除/修改後都需要顯式的呼叫該方法!
以下是示例**
複製**
///
/// 新增
///
/// 要新增的物件
///
public bool new(ttrademark idc)
else}}
/// /// 新增多個【使用insertallonsubmit】
///
///
public void new(gs.model.titem model)
;entities.add(entity);
db.titem.insertallonsubmit(entities);
db.submitchanges();}}
/// /// 修改
///
///
public void edit(gs.model.titem model)
}/// /// 刪除
///
///
public void delete(string ids)
}db.titem.deleteallonsubmit(entities);
db.submitchanges();}}
/// /// 【簡單查詢】獲取指定計量標準考核證書下的計量標準器/檢定規程/主要配套裝置
///
///
///
public ilistgetviewbycertificateid(guid certifiacteid)
}/// /// 【綜合查詢】我的待檢測結果任務單
///
///
///
///
public twireturn getmyworklist(pagingcondition paging, conditionmodel condition)
else if (condition.namesign == "testitemname" && condition.name != "")
}twi.totalcount = q.count();
if (paging.needpaging)
else
return twi;}}
/// /// 選擇計量標準考核證書
///
///
///
public void selectcertificate(string sampleids, string certificateids)
;entities.add(entity);}}
bpdc.tsampleoriginalinfo.insertallonsubmit(entities);
bpdc.submitchanges();
bpdc.dispose();
cpdc.dispose();
}/// /// 獲採樣品之標準/計量標準器/主要配套裝置/檢定規程
///
///
///
public datatable getbysampleids(listsampleids)
).distinct();
return linqtodatatable.todatatable(p.tolist());}}
/// /// 【join查詢例項】獲取帶檢測的器具資訊
///
///
public datatable getbysamplename(string samplename)
;datatable dt = linqtodatatable.todatatable(r.tolist());
return dt;
}}
C LINQ兩個List聯合查詢
兩個list解構相同,但資料不一致,現在需要挑選出不同的資料。新資料 private list hrryxxdatas newlist hrryxxdata 快取的資料 private list hrryxxcachedatas 計算新資料相比於老資料來說,那些資料有了變化,返回乙個list.lis...
C Linq查詢簡介
查詢是一種從資料來源檢索資料的表示式。linq 通過提供一種跨各種資料來源和資料格式使用資料的一致模型。所有 linq 查詢操作都由以下三個不同的操作組成 獲取資料源。建立查詢。執行查詢。2.建立查詢.var numquery from num in numbers where num 2 0 se...
利用 c linq 實現多個資料庫的聯合查詢
有個需求就是,我們要查詢的資訊分布在兩個不同的資料庫中,通過外來鍵相互關聯起來,然後返回datatable在前端展示內容。根據需求我們可以考慮c 的linq 先在從不同的資料中獲取相關的datatable,然後把兩個datatable 通過 linq 關聯查詢返回內容 string sql sele...