![](/img/trans.png)
[英]Linq query geting list by comparing Id with an list of objects that have ids
[英]LINQ Query comparing Id with an Id in a list inside SingleOrDefault query
我正在尝试使用SingleOrDefault Linq to SQL方法获取一个选项。
var po = repository.Context.AsQueryable<Option>().SingleOrDefault(o => o.Option.Id == sp.Options // sp.Options is a collection);
问题是在SingleOrDefault方法内部,我正在比较p.Option.Id ==集合。 我想要的是从与o.Option.Id匹配的sp.Options中选择选项。 我怎样才能做到这一点?
更新:我应该提到的一件事是sp.Options是与Option类不同的类。 sp.Options是SPOptions类,因此无法在contains方法内传递它。
使用Contains
(sp.Options.Contains(o.Option.Id))
例如:
var po = repository.Context.AsQueryable<Option>()
.SingleOrDefault(o => sp.Options.Contains(o.Option.Id));
如果sp.Options
成员与Id
不同,则可以执行以下操作:
var po = repository.Context.AsQueryable<Option>()
.SingleOrDefault(o => sp.Options.Any(r=> r.Id == o.Option.Id));
要么
var po = repository.Context.AsQueryable<Option>()
.SingleOrDefault(o => sp.Options.Select(r=> r.Id).Contains(o.Option.Id));
假定Id
是要与之比较的sp.Options
元素中的字段。
根据您的问题,您似乎希望这两个选项集具有单个匹配项,对吗? 如果是这样,我建议您将其编写为:
var po = repository.Context.AsQueryable()。Where(o => sp.Options.Any(item => item.id == o.Option.Id))。SingleOrDefault();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.