Linq技巧2 限制返回資料中的繼承型別

2022-01-24 23:43:28 字數 939 閱讀 3509

假如有像下面這樣的乙個模型,

怎樣在查詢時僅僅需要的cars呢?

這樣的幾個繼承關係的實體中,查詢時where 條件可以加入oftype(),你可以這樣來寫:  

var onlycars = from car in ctx.vehicles.oftype() 

select car;

這樣查詢正常工作,很好!這樣限制了cars 型別,偶爾帶出sportscars and suvs 這些子型別。

怎樣在查詢時僅僅需要的cars,且不包括那些子類呢?

假如你預期僅僅查詢一輛簡單的家庭用車,這以為著你不想在查詢中看見sportscars and suvs 這些子型別。

現在為了避免查詢那些子型別,就必須在查詢中明確一下條件。  

var onlycars = from car in ctx.vehicles.oftype() 

where !(car is sportscar) && !(car is

suv)

select car;

現在查詢出來的僅僅是cars 了。

號外

很不幸的是這種方式,你必須清晰地找出所有你不想要的可能存在的子型別,難免會存在大量或者更深繼承的子類。

如果這種方式被支援,無疑是更優雅的方式(很不幸,它不被支援)。  

var onlycars = from car in ctx.vehicles.oftype() 

where car.gettype() == typeof

(car)

select car;

vuex中 修改返回的資料

今天在做專案時,需要將得到的資料中的訂單型別進行,因為後端返回的資料中ordertype 訂單型別 0或者1,我需要將0轉變為堂食1轉變為外賣再渲染到 中。由於oedertype 0或1 同時是我需要傳的引數,如果在得到資料時用if 判斷,我怕之後我傳引數的時候會出現問題。所以這裡採用了getter...

struts2 中action返回的型別

在struts2框架中,當action處理完之後,就應該向使用者返回結果資訊,該任務被分為兩部分 結果型別和結果本身。結果型別提供了返回給使用者資訊型別的實現細節。結果型別通常在struts2中就已預定義好了 見下表 或者是由外掛程式提供,開發人員也可以自定義結果型別。預設配置的結果型別是dispa...

返回集合中的部分資料

適用情景 我的是 兩個介面需要返回同乙個集合 過濾條件不同,且在sql中過濾麻煩或者無法過濾 的情況,即第二個集合需要返回第乙個集合的部分資料 例如 倉庫中的物品與使用人是一對多的關係。每個物品,使用人可以是乙個,可以是多個,也可以沒有使用人 沒有使用人的預設為所有人都可以使用 第乙個情況,查詢所有...