c linq 聯合查詢

2021-08-26 05:55:39 字數 4222 閱讀 8462

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...