简化,我有一个实体,让我们在我的数据库中多次称它为" Foo" 。
我现在想根据FooCode
选择某些 Foo (用户选择FooCode
列表)。
我们说我有五 Foo ,其中三个人拥有FooCode
" 20" 即可。
我想用FooCode
" 20&#34 ;;返回 Foo 的列表。预期的结果是一个大小为3的 Foo 列表。
以下LinQ表达式完全正常,但在执行Where
之前选择所有 Foo (如果我是,请更正我错误)。因此,对于大量的 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 的列表,其大小为 5 。据我了解,应选择与上述查询完全相同的内容。
// 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问题,但是没有找到类似的问题。我不得不承认,我决定提出自己的问题,因为它比阅读和理解所有现有问题所需的时间更少。