C# Where()返回重复的行

C# Where()返回重复的行,c#,.net,linq,where,C#,.net,Linq,Where,我有一个简单的表格/模型: public class Note { public Guid Id { get; set; } public string note { get; set; } public DateTime? DateCreated { get; set; } public Guid InvestorId { get; set; } } 我可以用计算机查询 db.Database.SqlQuery<Note>("SELECT * FR

我有一个简单的表格/模型:

public class Note
{
    public Guid Id { get; set; }
    public string note { get; set; }
    public DateTime? DateCreated { get; set; }
    public Guid InvestorId { get; set; }
}
我可以用计算机查询

db.Database.SqlQuery<Note>("SELECT * FROM Notes WHERE InvestorId = '" + id + "'").ToList()

我得到了相同的行数,但是所有的音符都是第一行的重复。在LINQ中执行此操作而不返回副本的正确方法是什么?

我发现了问题。我一直在玩弄桌子,尝试不同的技术,我用相同的数字填充了Notes中的Id(不是InvestorId)。显然,Sql查询并不关心这一点,但LINQ不喜欢它。

您可以通过探查器(或类似工具)查看服务器上运行的查询吗?当您说“所有注释都是重复的”时,是四个字段都相同,还是Id/CreateDate不同,而注释字段相同?好的,那么您可以向我们提供您的查询吗?我的回答似乎给了您一些想法:这很有趣,因为LINQ实际上是使用SQL(可能SQL与您的几乎相同)。我假设您正在使用LINQ to Entities,我猜它位于从db返回的数据和它被映射到出错的Notes对象之间。我使用了与最初相同的查询。我是EF和LINQ的新手。关于LINQ to Entities的问题,我不太清楚。@BlooSki:你应该会的。如果我是对的,问题就埋在EF的深处。EF做了一些古怪的事情,MS仍在解决这些问题。LINQtoSQL更稳定——可惜MS正在进一步开发它。
db.Notes.Where(x => x.InvestorId == id).ToList()