簡體中文,我有一個實體,我們稱它爲「Foo」,在我的數據庫中幾次。如何執行查詢包括哪裏?
我現在想根據他們的FooCode
(用戶選擇FooCode
s列表)選擇某些Foo s。
比方說,我有 富 S,他們三個具有FooCode
「20」。 我想返回Foo s的列表,其中FooCode
「20」;預期結果是大小爲3的Foo s的列表。
以下LINQ的表達中工作完全正常,但它選擇所有富小號執行前的Where
(請糾正我,如果我錯了)。因此,大量的Foo這可能不是最快的解決方案。
// user defined list of FooCodes - now containing: "20", "20", "20"
List<string> selectedFooCodes = ...
List<Foo> = _transactionalDataAccess
.Query<Foo>(query => query)
.Where(entity => selectedFooCodes.Contains(entity.FooCode)).ToList();
我想一個LINQ表達式如下面將選擇更快,因爲Where
是Query
後直接。無論如何,它會返回一個Foo s的列表,其大小爲五個。據我所知,它應該選擇完全相同的上述查詢。
// user defined list of FooCodes - now containing: "20", "20", "20"
List<string> selectedFooCodes = ...
List<Foo> = _transactionalDataAccess
.Query<Foo>(query => query
.Where(entity => selectedFooCodes.Contains(entity.FooCode)));
這是爲什麼?有人能告訴我我錯過了什麼嗎?上述LinQ返回完全相同:
_transactionalDataAccess
.Query<Foo>(query => query);
爲什麼Where
沒有什麼區別? 還是有更快的記號我不知道?
對不起,如果這是之前問。我搜索了StackOverflow上的LinQ問題,但還沒有找到類似的問題。我不得不承認,我決定提出自己的問題,因爲它比閱讀和理解所有現有問題所需的時間少。
你能張貼關於你的代碼的詳細信息的對象?什麼是_transactionalDataAccess的類型? –
@RicardoSilva它是'ITransactionalDataAccess'類型,它縮小到'IQueryDataAccess'。對不起,這是我們公司實習生框架中的一件事。它基本上只代表與(Oracle)數據庫的接口。希望有所幫助。它甚至重要嗎? – Alex
如果不知道'_transactionalDataAccess'對象是什麼,就不可能回答這個問題。 – Hogan