表中有一個用於保存代表Property,Cars,Others的整數的類別的列。在各個欄目中搜索的最可維護的方式
有對下面這樣的關鍵字搜索屬性將重點放在屬性類型,州,縣,和NoOfBaths列顯示每個類別的興趣不同的列;而搜索汽車的關鍵詞則集中在品牌,型號,年份等等。
所有條目在所有列中的數據,但數據有時候可能有不同類別的含義稍有不同。例如,PropertyType列保存汽車的CarType數據和其他數據的ItemType數據,但是這些列僅在搜索屬性時纔有意義。
物業
屬性類型,
所在國,
位置縣,
沒有浴場
汽車的
製作,
型號,
年,
所在國
其他
ITEMNAME,
製作,
顏色,
所在國
感興趣的列被限制爲四個出於性能的考慮。像谷歌一樣,在用戶界面中使用單個搜索文本框。用於在查詢被觸發前預先識別用戶搜索類別的算法發佈了可接受的98%準確率。該算法還可以很好地猜測可能是顏色,州,縣等。 該網站起始於一個使用c#,實體框架,SQL服務器開發的小型廣告網站。
由於它被認爲是一個小項目,我想我可以使用LINQ把它關閉的實體。使用if語句消除空字段,它們是每個類別的有限數量的查詢(2的4次方)。
例如, 1
,爲queryHelper
NULL值之前where子句由查了一些房源。
通過我做的時候,我不知道,如果像這樣的小項目當之無愧的這種邏輯,即使它似乎更加靈活和易於維護。感興趣的列可以改變而不影響代碼。
的問題是,如果有一個更簡單的方法來實現這一目標?
其次,爲什麼沒有一個「可忽略()」在LINQ函數,使得where子句可以如果進行比較的值可以忽略的一個給定的部分爲空白或空?
例如,1體改
var results = context.Items.Where(m=>m.make.Ignorable() == make &&
m.model.Ignorable() == model && m.year.Ignorable() ==year &&
m.state.Ignorable() == state);
...
或符號,說「¬」,達到像這樣 例如,相同的。 1體改
var results = context.Items.Where(m=>m.make ¬== make && m.model ¬== model
&& m.year ¬==year && m.state ¬== state);
...
Cars objCars = new Cars(){model =「favmodel」,year =「2017」,locationState =「mystate」};在這種情況下,默認情況下objCars.make將爲null,並且返回(this.Make == other.Make)&& ...將返回汽車,其中make == NULL而不是省略make test,如 return(this.Model == other.Model)&& (this.Year == other.Year)&& (this.Location_State == other.Location_State); – user7363900
正如我已經說過的,您可以修改條件以獲得更有效的比較 –
使用Linq2Entities系統(如EntityFramework)時,不能重載等於 –