我查询使用LINQ到SQL数据库。这里是我的数据:LINQ到SQL查询返回相同的记录两次
Name LastName Age
------------------------------
1 Abc Def 15
2 Abc Def 17
3 xyz wss 17
我的LINQ to SQL代码:
Context _context = new Context("Conn_String");
var table = _context.GetTable<Person>();
List<Person> persons = table.Where<Person>(p => p.Name == "Abc" && p.LastName == "Def").ToList<Person>();
按照我的理解,这个查询应该返回2个记录。即记录1和记录2.但它将两次返回记录1。你可以启发我,如果它是Linq中的Sql错误或我做错了什么?
编辑:
这是我的DAL代码:
public List<T> GetList<T>(Expression<Func<T, bool>> predicate) where T : class
{
try
{
Context _context = new Context("Conn_String");
var table = _context.GetTable<T>();
return table.Where<T>(predicate).ToList<T>();
}
catch (Exception ex)
{
throw ex;
}
}
因为我调用这个方法:
List<Person> person = DAL.GetList<Person>(p => p.Name == "Abc" && p.LastName == "Def");
foreach(var Person in persons)
{
// Print(person.Age);
}
机会是有什么毛病你诊断相匹配的值的第一行的实体键。请说明你如何确定相同的记录被返回两次。 –
是的。我多年来在数据仓库项目中广泛使用LINQ(尽管不是SQL),并且从未见过这种情况。我将开始调试SQL级别 - 请参阅数据库上生成的语句,然后通过在管理应用程序中运行它来查看SQL Server返回的结果。这是99.9%的错误诊断。 – TomTom
返回的记录显示两个记录的Age = 15。 –