如何执行包含Where的查询?

时间:2015-04-30 12:55:31

标签: c# .net linq entity-framework linq-to-entities

简化,我有一个实体,让我们在我的数据库中多次称它为" 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问题,但是没有找到类似的问题。我不得不承认,我决定提出自己的问题,因为它比阅读和理解所有现有问题所需的时间更少。

0 个答案:

没有答案