我有一段代码应该检索 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;
}
}
参数 sessionStrs
和 ip
已正确传递到方法中。但是,我收到以下错误:
(来源: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/