我有一个实体Person
和一个包含一组人的视图模型。
public class ViewModel
{
public string Name { get; set; }
public string Description { get; set; }
public int Project { get; set; }
public ICollection<PersonsViewModel> PersonCollection { get; set; }
}
public class PersonsViewModel
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
这些是我的尝试:
1E:
ICollection<Person> prsn = new PersonRepository().GetAll().Where(x => vm.PersonCollection.Select(y => y.Id).Contains(x.Id)).ToList();
2E:
ICollection<Person> prsn = (from st in new PersonRepository().GetAll()
from qw in cm.PersonCollection
where st.Id == qw.Id
select st).ToList();
基于this博文,3e:
ICollection<Person> prsn = (from st in new PersonRepository().GetAll()
from qw in cm.PersonCollection
where st.Id.Equals(qw.Id)
select st).ToList();
我要做的是,根据视图模型中的人物ID,从datacontext中选择人物实体。在所有3个(我做了更多尝试,但我失去了计数)的情况下,我最终得到了标题中描述的运行时错误。
我也在SO上发现了同样的问题,但是由于没有像模型/实体这样的额外代码,因此很难与我进行比较。
有人能指出我正确的方向吗?
答案 0 :(得分:0)
你可以这样做,
var Ids=vm.PersonCollection.Select(y => y.Id).ToArray();
ICollection<Person> prsn =
new PersonRepository().GetAll().Where(x => Ids.Contains(x.Id)).ToList();