我有一个查询,该查询接收一个包含所有ID的项目列表,而我需要在另一个表中进行搜索。例如,这是我的第一个表类:
public class Presave
{
public int PresaveID { get; set; }
public int ArtistID { get; set; }
public string AlbumName { get; set; }
public DateTime? ReleaseDate { get; set; }
public virtual ICollection<UserPresave> UserPresaves { get; set; }
}
然后是我需要搜索的其他课程:
public class UserPresave
{
[Key]
public int UserID { get; set; }
public int PresaveID { get; set; }
public string AccessToken { get; set; }
public virtual Presave Presave { get; set; }
}
这两者之间存在一对一(预保存)对多(用户预保存)的关系。
我想搜索包含与我通过的UserPresave
类相同的PresaveID
的所有Presave
。但是请注意,列表中的每个PresaveID
元素的Presave
都不相同。我以为这个查询会工作:
public static List<UserPresave> GetAllUserPresavesByPresaveIDs(List<Presave> ids)
{
using (var Context = GetContext())
{
return Context.UserPresaves.Where(x => x.PresaveID == ids.Contains(x.PresaveID)).ToList();
}
}
但是在x.Presave
下收到一个错误,指出我无法从int
转换为presave
。我哪里做错了?谢谢!
我从这个问题中得到了这个查询概念! https://stackoverflow.com/a/36164453/6480913
答案 0 :(得分:1)
如下所示更改功能:
public static List<UserPresave> GetAllUserPresavesByPresaveIDs(List<Presave> ids)
{
var hs = new HashSet<int>(ids.Select(x=>x.PresaveID));
using (var Context = GetContext())
{
return Context.UserPresaves.Where(x => hs.Contains(x.PresaveID)).ToList();
}
}
您的问题是您使用的类型不一致。在此处使用HashSet可以大大提高大型数据集的性能。
答案 1 :(得分:0)
尝试此操作...您可以从Presaves表中检索数据,然后从UserPresaves表中获取关联数据
<body>
<div class="some-class">
<div id="popup">...</div>
</div>
</body>