[英]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.