c# - ToList() 上的 "Sequence contains no matching element"

标签 c# sql linq entity-framework

我有一段代码应该检索 User 对象的 List

public List<User> GetUsersBySessions(string[] sessionStrs, string ip)
{
    if (sessionStrs == null || string.IsNullOrEmpty(ip))
        return new List<User>();
    using (var ctx = new DataContext())
    {
        var ret = ctx.Sessions.Include("User").Where(s => sessionStrs.Contains(s.ID) && s.IP.Equals(ip)).Select(s => s.User).ToList();
        return ret;
    }
}

参数 sessionStrsip 已正确传递到方法中。但是,我收到以下错误:

error
(来源:imgbomb.com)

当我没有使用任何 .First().Single() 时,怎么会导致这种类型的错误?我只是试图让表中适合数组的所有项目将它们作为 List 返回。我以前从未见过这样的问题。

下面这行代码甚至会导致错误:

var ret = ctx.Sessions.ToList();

这是我的DataContext:

public class DataContext : DbContext
{
    public GenericDataContext()
        : base(CONNECTION_STRING) //My CONNECTION_STRING is defined somewhere else, but I'm going to hide that for security's sake.
    {
    }

    public DbSet<Password> Passwords { get; set; }
    public DbSet<Session> Sessions { get; set; }
    public DbSet<User> Users { get; set; }

}

这是我的 Session 模型:

[Table("tbl_Sessions")]
public class Session
{

    [Column("SessionID")]
    [MaxLength(24)]
    [Required]
    [Key]
    public string ID { get; set; }

    [Column("UserID")]
    [Required]
    public int UserID { get; set; }

    [Column("IP")]
    [MaxLength(24)]
    [Required]
    public string IP { get; set; }

    [ForeignKey("UserID")]
    public virtual User User { get; set; }

}

注意 两个 Classes 都有正确的命名空间,并且有正确的 using 语句。

最佳答案

这个问题的实际答案与我的一个 模型 有两个 Keys 的事实有关,每个都是 string。当我将所述 model 更改为具有 int 作为 Key 时,一切正常。

关于c# - ToList() 上的 "Sequence contains no matching element",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25395712/

相关文章:

sql - 带 null 的完整外连接缺失值

mysql - 如何在 MySQL 查询本身中检索存储在 JSON 数组中的值?

linq - 使用 Reactives 合并分块消息

linq - 如何检查 LINQ 中服务器端集合中的列表中是否缺少任何值? (给出 SQL)

C# HMAC 到 Java

c# - 如何在单元测试中调用公共(public)静态方法

C# 约定/最佳实践

sql - 获取错误的服务器名称

c# - LINQ Enumerable 查询返回副本还是引用?

c# - 如何从 DataGridView 保存和检索按钮