LINQ模糊匹配时查出了不相干的数据?
我有如下数据:现在我根据“姓名”,作模糊匹配,如代码:
using (var t = new Entities())
{
var query = from q in t.Members where q.姓名.Contains("张") select q;
return query.ToList();
}
结果,却得了如下结果:
数据库用的是SQLite,姓名字段的类型是nvarchar。
然后又作如下测试:
List<Member> temp = new List<Member>();
temp.Add(new Member() { 姓名 = "张良", QQ = "4545564645" });
temp.Add(new Member() { 姓名 = "刘禹锡", 地址 = "珠海" });
var query = from q in temp where q.姓名.Contains("张") select q;
结果正常,推测问题应该是出在数据库上,各位有没遇到过这样的问题?
--------------------编程问答-------------------- 反正至少在我用sqlite的那个时候,它对中文的处理是不靠谱的。 --------------------编程问答-------------------- 是不是sqlite编码问题呢 --------------------编程问答-------------------- 将LINQ对应的SQL语句放到SQLITE里执行一下,看是什么结果 --------------------编程问答-------------------- 把Linq對應的標准sQL在sQlite中執行看是否生成相同結果 --------------------编程问答-------------------- 哇,还惊动了二位版主。
我把LIQN执行的SQL 放到数据库里查询了一下,结果也是正确的,它生成的SQL如下:
SELECT [Extent1].[消费额] AS [消费额] FROM [Member] AS [Extent1] WHERE (CHARINDEX('张', [Extent1].[姓名])) > 0
只返回了一条数据。不知为什么LINQ会返回两个实体呢?
补充:.NET技术 , C#