我有如下表:EF LINQ '凡' 有2场在同一时间
id (bigint)
adId (bigint)
listId (bigint)
listFieldValue (bigint)
而且我有这样的搜索列表:
List<long> searchListFieldValues = new List<long>();
searchListFieldValues.Add(100);
searchListFieldValues.Add(200);
于是我就用:
using (ClearWhiteDBEntities cwContext = new ClearWhiteDBEntities())
{
var adsWithRelevantadFields =
from adField in cwContext.tblAdFields
join ads in cwContext.tblAds on adField.adId equals ads.id
group adField by adField.adId into adAdFields
where searchListFieldIds.All(i => adAdFields.Select(co => co.listFieldValue).Contains(i))
select adAdFields.Key;
MessageBox.Show(adsWithRelevantadFields.Count().ToString());
}
但现在我需要同时检查两个字段listId
和listFieldId
,所以我创建了另一个搜索列表:
List<long> searchListIds = new List<long>();
searchListIds.Add(11);
searchListIds.Add(12);
现在我需要把所有adId
有(listId == 11 && listFieldValue==100
)和(listId == 12 && listFieldValue==200
)
我想:
where searchListIds.All(i => adAdFields.Select(co => co.listId).Contains(i))
&& searchListFieldValues.All(i => adAdFields.Select(co => co.listFieldValue).Contains(i))
但它不工作。任何解决方案
它以什么方式不起作用?它会给出错误的结果吗?抛出异常? –
@Grant Winney谢谢。 –
@Grant Winney错误的结果。 –