gpt4 book ai didi

c# - 通过将 var 更改为 IEnumerable 来获得不同的搜索结果

转载 作者:行者123 更新时间:2023-11-30 13:15:31 24 4
gpt4 key购买 nike

当我将 var 更改为 IEnumerable 时,我的搜索结果会区分大小写;考虑以下代码:

下面的代码返回 RA 或 ra 两种情况:

var result = from x in dataBase.tableName 
select x;
result = result.Where(x => x.id.Contains("ra"));

下面的代码只返回带有 ra 而不是 RA 的情况:

IEnumerable result = from x in dataBase.tableName 
select x;
result = result.Where(x => x.id.Contains("ra"));

有人可以帮我解释一下这是怎么回事吗?结果不应该相似吗?

最佳答案

区别在于,在第一种情况下,var将是 IQueryable<T> - 这意味着你的 Where电话将拨至 Queryable.Where (在将 lambda 表达式转换为表达式树之后)。过滤器最终在数据库中执行,我怀疑您的字段不区分大小写(因此搜索不区分大小写)。

在第二种情况下,你有一个 IEnumerable<T> , 所以你的 Where电话将拨至 Enumerable.Where (在将您的 lambda 表达式转换为委托(delegate)之后)。过滤器最终在 .NET 代码中执行 - 其中 Contains始终区分大小写。

基本上,LINQ 是一个有漏洞的抽象 - 是的,如果同一个过滤器在所有情况下都给出相同的结果,那就太好了,但这是不现实的。了解泄漏的位置,并采取相应的行动 - LINQ 仍然是一个巨大的福音:)

关于c# - 通过将 var 更改为 IEnumerable 来获得不同的搜索结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7055512/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com