【菜鳥看框架】——Linq實現動態模糊查詢
引言
在上一篇部落格中我給大家介紹了我們怎樣用EF自動生成實體,當我們生成實體後就需 要面向實體來操作,而不再是針對資料庫中的表,這就需要一種新的知識——Linq,利 用Linq實現簡單的增、刪、改、查在這篇部落格中就不給大家介紹了,在這主要是給大家 介紹怎樣用Linq實現動態模糊查詢。業務需求
首先現在給大家看一個查詢的介面: 這個查詢介面實現的功能就是,當我們在檢索型別的時候選擇了正題名(書名),然後 在選擇檢索模式的時候,選擇了任意匹配。那麼當我們在編碼的時候其實就是這樣想 的,首先我們查詢的表中的欄位是動態的(根據我選擇的檢索型別來判斷),並且在對public List<Model.WorkLog> QueryStuffNum(WorkLog enWorkLog) { //根據它在WorkLog表中的教工號查出其對應的所有的工作記錄。 var temp = from c in dbContext.WorkLog where c.staffNum == enWorkLog.staffNum select c; return temp.ToList(); }
這樣我們針對一般的查詢就可以用這個簡單的Linq查詢語句來實現,但是我們可以看 到我們的欄位是一定的,也就是不能根據U層的需求來動態的選擇欄位。 模糊查詢程式碼: U層程式碼如下:
string filedName = "";
string valueTwo = "";
switch (strQuery)
{
case ("教工號"):
filedName = "[email protected] && [email protected]";
break;
case ("姓名"):
filedName = "[email protected] && [email protected]";
break;
case ("學院"):
filedName = "[email protected] && [email protected]";
break;
case ("電話"):
filedName = "[email protected] && [email protected]";
break;
case ("郵箱"):
filedName = "[email protected] && [email protected]";
break;
case ("級別"):
filedName = "[email protected] && [email protected]";
Context.Items["fileName"] = filedName;
Context.Items["value"] = strSearch;
valueTwo = "True";
//定義Tteacher來儲存查詢到的資訊
List<Administrator> Tteacher = new List<Administrator>();
Tteacher = administratorBll.QueryAdministrator(filedName, strSearch, valueTwo);
D層程式碼如下:
public List<Model.Administrator> QueryAdministrator(string fileName, string value, string valueTwo)
{
//當用戶選擇某一種查詢方式的時候,用到的實體欄位是不一樣的,
var administrator = dbContext.Administrator.Where(fileName, value, valueTwo);
return administrator.ToList();
}
通過上面的對比我們發現,其實微軟寫的這個庫檔案就是對where()的一個重寫,讓
我們將查詢條件可以以字串的形式來展現。
小結
在剛遇到這個問題的時候一點思路都沒有,尤其是對linq非常不熟悉的情況下,於是在 網上查找了一些資料,但是沒有什麼大的幫助,尤其是很多都是全英的資料對於我們這 種英語水平的人來說實在是太痛苦了,和師哥師姐也交流過,但是他們好像都沒有遇到 過這種需求,所以也沒有提供一種非常明確的思路,但是這個專案中是非常重要的功 能,所以硬著頭皮藉助百度翻譯繼續查詢資料,最後利用上面的方法解決了這個難題, 希望能給廣大讀者一些幫助。相關推薦
【菜鳥看框架】——Linq實現動態模糊查詢
引言 在上一篇部落格中我給大家介紹了我們怎樣用EF自動生成實體,當我們生成實體後就需 要面向實體來操作,而不再是針對資料庫中的表,這就需要一種新的知識——Linq,利 用Linq實
【菜鳥看框架】——MVC+EF實現分頁
public static HtmlString ShowPageNavigate(this HtmlHelper htmlHelper, int currentPage, int pageSize, int totalCount) { var redirectTo =
【菜鳥看框架】——EF如何自動生成實體
引言 在上一篇部落格中給大家介紹了一些關於EF框架的基本知識,讓大家對實體架構算是有了一個入門的認識,當然知識 這一篇部落格是不能很清楚的理解實體架構的內涵的,我們需要在實踐中自己去不斷的
【菜鳥看框架】——淺談EF框架
引言 在上一篇部落格中說道在合作小組中接觸到了很多新的知識,這些新的知識讓我感到我們現在還是一隻很弱小的菜 鳥,我們根本不知道外面的事物是多麼的新鮮,在我們之外還有多少東西是需要
【菜鳥進階】連結串列_C 結構體 共用體 列舉_遞推遞迴
座右銘 這些年我一直提醒自己一件事情,千萬不要自己感動自己。大部分人看似的努力,不過是愚蠢導致的。什麼熬夜看書到天亮,連續幾天只睡幾小時,多久沒放假了,如果這些東西也值得誇耀,那麼富士康流水線上任何一個人都比你努力多了。人難免天生有自憐的情緒,唯有時刻保持清醒,才能看清
【菜鳥之路】RecyclerView新增Item點選事件
今天下午繼續在專案中學著做RecyclerView,想給每個Item新增一個點選跳轉,翻了翻買的兩本書發現沒有呃,只能百度+看看網上前輩們的程式碼了。 翻了一些比較不錯的文章,瞭解到大概的幾種實現方法: 1.通過RecyclerView中
【菜鳥教程筆記】Python3 集合
集合set是一個無序不重複元素的序列。 可以使用{}或者set()函式建立集合。 要點:建立空集合只能使用set(),如果用{}會被認為是建立了空字典。 不同時包含於a和b的元素用a^b表示 注意:字串直接作為set的引數輸入,會認為字串中的每個字元是一個元素。
如何寫一顆二叉樹(遞迴)【菜鳥學習日記】
老規矩,開篇點題,今天寫了二叉樹,整理總結一下 要寫二叉樹,先畫出一顆來 二叉樹我是用連結串列來實現的 1、每一個節點包含資料,左指標和右指標,分別指向左孩子和右孩子 //建立節點型別 //節點中有資料,有指標 template<
【菜鳥學習Linux】-第一章-Linux環境搭建-安裝VMware虛擬機器
本人菜鳥一個,剛畢業才上班2個月,現在用到Linux部署專案,這才開始學習Linux,以下是我在安裝Linxu系統是遇到的一些問題,希望能給廣大菜鳥們在學習的道路上提供幫助和指導,廢話不多說!開工! 第一步:安裝VMware9虛擬機器,如果已經安裝好的朋友可以跳過,看下一章
【菜鳥學WCF】使用js+ajax呼叫WCF以及返回資料型別的控制
先上程式碼,再談問題。 Service1.svc.cs程式碼: using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization;
【菜鳥也瘋狂UML系列】——淺析UML四種關系
顏色 雙向關聯 直線 不同的 .net 人的 學習 系列 主類 在UML中。關系是很重要的。它抽象出對象之間的聯系,讓對象構成某個聯系起來的結構。以下將簡要分析一下UML中的四種關系:關聯。依賴,泛化,實現。 一、舉例羅列
【菜鳥教程】小白接觸白鷺引擎4天,成功做了一款足球小遊戲
下一步 發現 https sta 圖片 sce 變量名 找到 是否 寫在前面:隨著越來越多的新人開始接觸白鷺引擎,創作屬於自己的遊戲。考慮到初學者會遇到一些實際操作問題,我們近期整理推出“菜鳥”系列技術文檔,以便更好的讓這些開發者們快速上手,Egret大神們可以自動忽略此類
【Java菜鳥學習總結】Java基礎知識(類)
個數 修飾符 trac 空間 釋放 set 大小 成員方法 的區別 目錄 【Java菜鳥學習總結】Java基礎知識(類) 1、面向對象編程 2、類 3、static關鍵字 4、final關鍵字 【Java菜鳥學習總結】Java基礎知識(類) 1、面向對象編程 1.1
【菜鳥學習ASP.net】xml與html的區別
前言: 剛剛接觸了html現在又來了個xml,一開始有點迷糊,後來發現通過實踐對比學習,二者之間的區別越來越清晰明瞭了,接下來和我一起來搞懂它吧! 1、什麼是HTML 超文字標記語言(英語:HyperText Markup Language,簡稱:HTML)是一種用於建立網頁
【菜鳥學習asp.net】 web應用程式與web網站的區別
前言: 最近學習了與web程式設計相關的很多的基礎知識,接下將是一系列的基礎知識的對比學習,今天先簡單的瞭解一下web應用程式與web網站的區別! 1、編譯方式不一樣 這個是我認為二者之間最大的區別了,首先,web應用程式中的所有的檔案都是 相互獨立 的,就是說我的一個
【從菜鳥到高手】程式語言中的 eval 與 REPL
1 深入理解 Expression 與 Statement 的區別 在程式語言中,表示式(expression)與語句(statement)有著不同的內涵。只有理解了它們的不同,才能更加清楚的理解不同語言中 eval 的異同。 原始碼在編譯或解析執行時,首先會
【菜鳥】RESTful 架構詳解
RESTful 架構詳解 分類 程式設計技術 1. 什麼是REST REST全稱是Representational State Transfer,中文意思是表述(編者注:通常譯為表徵)性狀態轉移。 它首次出現在2000年Roy Fielding的博士論文中,Roy F
【從原始碼看Android】03Android MessageQueue訊息迴圈處理機制(epoll實現)
1 enqueueMessage handler傳送一條訊息 mHandler.sendEmptyMessage(1);經過層層呼叫,進入到sendMessageAtTime函式塊,最後呼叫到enqueueMessageHandler.java public bool
【菜鳥只能慢慢練】望各路高手多多賜教
自我介紹 努力向各位前輩大牛學習。github:https://github.com/Joey-Liu/ leetcode: https://leetcode.com/joey-liu/ codeforces: http://codeforces.com/profile
【菜鳥程式】一個判斷素數的小程式
本人是個礦業方面的研究生,本著導師不管我,隨便練練手的心態看看C++方面的程式設計什麼的。程式碼一般都不怎麼成熟。純屬寫著玩。 素數判斷程式: 輸入以空格分隔,以0結束輸入。 若為素數,則輸出。1不是素數。 如下: #include<iostre