這個LINQ查詢我能改善這個LINQ查詢如何提高搜索
var filter = from Dep in deptlist
where (Dep.DepNm.StartsWith(txt1.Text.ToLower())
|| Dep.DepNm.StartsWith(txt1.Text.ToUpper())
||Dep.DepNm.Contains(txt1.Text))
select Dep;
這個LINQ查詢我能改善這個LINQ查詢如何提高搜索
var filter = from Dep in deptlist
where (Dep.DepNm.StartsWith(txt1.Text.ToLower())
|| Dep.DepNm.StartsWith(txt1.Text.ToUpper())
||Dep.DepNm.Contains(txt1.Text))
select Dep;
目前,你做一個.Text
,.Text.ToUpper()
和.Text.ToLower()
固定值每個項目的; (ToUpper()
等相對較貴);您可以解除了這一點:
string text = txt1.Text, upper = text.ToUpper(), lower = text.ToLower();
var filter = from Dep in deptlist
where Dep.DepNm.StartsWith(lower) || Dep.DepNm.StartsWith(upper)
|| Dep.DepNm.Contains(text))
select Dep;
我假設這裏.DepNm
是平凡的便宜。如果這確實是一個昂貴的財產進行查詢,你可以使用let
的通話儘量減少:
var filter = from Dep in deptlist
let name = Dep.DepNm
where name.StartsWith(lower) || name.StartsWith(upper)
|| name.Contains(text))
select Dep;
var filter = from Dep in deptlist
where Dep.where(d => d.DepNm.ToUpper().Conatins(txt1.Text.ToUpper()))
select Dep;
如果可以在你的解決方案,加上lambda表達式。所以,你救了至少一個行:)
編輯: 忘記告訴我說,這是更短:
var filter = deptlist.where(d => d.DepNm.ToUpper().Conatins(txt1.Text.ToUpper())).ToList();
我不認爲你的答案和OP中的LINQ一樣 – 2010-07-30 07:38:03
我認爲這是更快,因爲更小的條件。
var filter = from Dep in deptlist
where (Dep.DepNm.StartsWith(txt1.Text, StringComparison.OrdinalIgnoreCase))
||Dep.where(d => d.DepNm.ToUpper().Contains(txt1.Text.ToUpper()))
select Dep;
回答是好,我是指查看該鏈接與搜索和改善關係use query linq in search with empty field
這是選擇題用於填充或不填充textbox
,但此答案是在以下情況下工作的:
您是一個字段填充或兩個字段填充或..第7個字段填充。
哪個LINQ提供者是那個?它很重要。 LINQ到對象? LINQ到SQL?等等? – 2010-07-30 07:16:50
這是Linq-to-Sql嗎? – cjk 2010-07-30 07:16:50
謝謝。這是LINQToObjects,我正在使observablecollection – joey 2010-07-30 07:23:02