gpt4 book ai didi

c# - Linq & String.ToLower() 奇怪的行为

转载 作者:太空狗 更新时间:2023-10-30 00:17:02 27 4
gpt4 key购买 nike


我在服务器端有一个查询,它从邮政编码表返回不同城市的列表。
我正在使用 WCF RIA 服务。
以下查询在 provincename == ""

时成功返回 228 个城市
    public IQueryable<CityPM> GetCities(string provinceName)
{
return this.ObjectContext.ZipCodes.Where(z => z.Province.Contains(provinceName))
.GroupBy(z => z.City)
.Select(g => g.FirstOrDefault())
.Select(zc => new CityPM() { ID = zc.ID, Name = zc.City });
}

但是如果我使用如下所示的 ToLower() 方法,当 provincename == "" 时查询返回 0 个城市。

    public IQueryable<CityPM> GetCities(string provinceName)
{
return this.ObjectContext.ZipCodes.Where(z => z.Province.ToLower().Contains(provinceName.ToLower()))
.GroupBy(z => z.City)
.Select(g => g.FirstOrDefault())
.Select(zc => new CityPM() { ID = zc.ID, Name = zc.City });
}

为什么查询没有返回任何内容?

最佳答案

尝试通过使用数据库管理工具或在查询表达式末尾调用 .ToTraceString() 来检查生成的 SQL。

引用:http://blog.aggregatedintelligence.com/2010/06/viewing-entity-framework-generated-sql.html

我们在工作中通过扩展使用 ToTraceString:

public static IQueryable<T> TraceSql<T>(this IQueryable<T> query)
{
var sql = ((System.Data.Objects.ObjectQuery)query).ToTraceString();

// do whatever logging of sql you want here, eg (for web)
// (view by visiting trace.axd within your site)
HttpContext.Current.Trace.Write("sql", sql);

return query;
}

然后可以按如下方式使用:

public IQueryable<CityPM> GetCities(string provinceName)
{
return this.ObjectContext.ZipCodes.Where(z => z.Province.ToLower().Contains(provinceName.ToLower()))
.GroupBy(z => z.City)
.Select(g => g.FirstOrDefault())
.Select(zc => new CityPM() { ID = zc.ID, Name = zc.City })
.TraceSql();
}

请原谅我的错别字,这是凭内存。希望它能帮助您理解您的问题。

关于c# - Linq & String.ToLower() 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3974365/

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