为什么第2部分返回null。
奇怪的是,如果我按字符串类型搜索然后返回null,但是如果我按整数类型或bool类型搜索。然后我得到品牌对象。
第1部分
//.... OK code
public static Brand GetBrand(string name)
{
DataContext db = new DataContext();
using (db)
{
Brand b = (from v in db.Brands
where v.Name == name
select v).FirstOrDefault();
return b;
}
}
[HttpGet]
public IHttpActionResult Get(string name)
{
Brand b = MobileHandler.GetBrand(name);
return Ok(b);
}
第2部分
//..... Return null
public static List<Brand> GetBrands()
{
DataContext db = new DataContext();
using (db)
{
return db.Brands.ToList();
}
}
[HttpGet]
public IHttpActionResult Get(string name)
{
return Ok((from v in MobileHandler.GetBrands()
where v.Name == name
select v).FirstOrDefault());
}
但是我收到以下错误:
<Brand xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/DataLayer.MobileMgt" i:nil="true"/>
答案 0 :(得分:1)
我认为这是区分大小写的比较问题。您的代码适用于ints
和bools
而不是字符串以及品牌名称为&#34; A pple&#34;不是&#34; 一个 pple&#34;
Entity Framework uses case comparison settings on the SQL server,通常设置为不区分大小写。在你的情况下然后&#34; Apple&#34;等于&#34; apple&#34;。这是第一种情况。
但.NET使用区分大小写的比较,这是第二种情况。所以&#34; apple&#34;不等于&#34; Apple&#34;。要解决此问题而不是v.Name == name
使用v.Name.Equals(name, StringComparison.OrdinalIgnoreCase)
。