我有十個字段的表。我需要在LINQ中進行搜索查詢。 我的領域是:使用查詢linq搜索空字段
名字(字符串),姓氏(字符串),FatherName(串),NotationId(INT),DebtPrice(INT),BRANCHNAME(串),DebtId(INT),MeliCode(串)
我的問題是:當用戶不補領域,這個領域不應該在查詢搜索使用
感謝。
收集Legal.View_Dossiers
我有十個字段的表。我需要在LINQ中進行搜索查詢。 我的領域是:使用查詢linq搜索空字段
名字(字符串),姓氏(字符串),FatherName(串),NotationId(INT),DebtPrice(INT),BRANCHNAME(串),DebtId(INT),MeliCode(串)
我的問題是:當用戶不補領域,這個領域不應該在查詢搜索使用
感謝。
收集Legal.View_Dossiers
您可以使用此代碼:
var query = from d in datacontext.sample where
(TBoxFName.Text=="" || d.FirstName.Contains(TBoxFName.Text.Trim()))
&&(TBoxLName.Text == "" || d.LastName.Contains(TBoxLName.Text.Trim()))
&&(TBoxFatherName.Text == "" || d.FatherName.Contains(TBoxFatherName.Text.Trim()))
&& (TBoxPriceDebt.Text == "" || d.DebtPrice.ToString().Contains(TBoxPriceDebt.Text.Trim()))
&& (CBoxBranch.Text == "" || d.BranchName.Contains(CBoxBranch.Text.Trim()))
&&(TBoxDebt.Text == "" || d.DebtId.Contains(TBoxDebt.Text.Trim()))
&&(TBoxMeliCode.Text == "" || d.MeliCode.Contains(TBoxMeliCode.Text.Trim()))
select d;
爲什麼你要'TBoxFName.Text ==「」'???如果運行'd.FirstName.Contains(TBoxFName.Text.Trim())'並且'd.FirstName'具有值,則返回true。 –
,因爲如果「TBoxFName.Text ==」「'then * firstname *」字段不是搜索查詢的因素。 – aya
如果'TBoxFName.Text ==「」'爲空,那麼你的方法並非有用,那麼確定如果d.FirstName不爲null,則d.FirstName.Contains(TBoxFName.Text.Trim())'返回true,如果你想空檢查,你應該這樣做:'d.FirstName!= null && d.FirstName.Contains(TBoxFName.Text.Trim())'實際上按照你當前的方式,如果文本框有值並且輸入字符串是d.FirstName是空的,那麼你會得到一個異常。事實上,我確信你目前的方式並不能幫助OP。 –
我認爲(目前還不清楚),你的意思是這樣:
IQueryable<YourType> query = /* some basic query; maybe db.TheTable */
if(!string.IsNullOrEmpty(firstName))
query = query.Where(row => row.FirstName == firstName);
if(!string.IsNullOrEmpty(lastName))
query = query.Where(row => row.LastName == lastName);
if(!string.IsNullOrEmpty(fatherName))
query = query.Where(row => row.FatherName == fatherName);
// etc
var matches = query.Take(50).ToList();
這裏採用查詢組成發行最合適底層查詢可以;例如,如果這是LINQ到SQL和firstName
和fatherName
提供的,你會得到這樣的:
select top 50 {some columns} from [dbo].[TheTable] t
where t.FirstName = @p0 and t.FatherName = @p1
其中@p0
和@p1
是抱着值的參數。
你可以嘗試寫:
IEnumerable<YourType> query = //data taken from database
var queryWhere = query
.Where(x => x.FirstName == varFirstName || string.IsNullOrEmpty(x.FirstName))
.Where(x => x.LastName == varLastName || string.IsNullOrEmpty(x.LastName))
.Where(x => x.FatherName == varFatherName || string.IsNullOrEmpty(x.FatherName))
//...and so on...
.ToList();
這些是隻有8場。我不明白 - 這是一個LINQ to SQL查詢嗎? LINQ到集合? – Aidan
這是從LINQ到SQL – aya