获取一个以person Id为键的字典。每个值都是一个List,该类包含一个日期时间。
我想从数据库中获得所有合同,其中列表中的每个日期都在合同之间,从和直到日期。每个人可以有多个。
我不能使用。any()函数。如果我这样做,我会得到这个错误:"局部序列不能在LINQ到SQL查询操作符的实现中使用,除了Contains()操作符。"
这是一个。any方法不能与linq to sql一起工作的例子。我需要另一种方法来管理它。
public class SimpleObject
{
public bool Test { get; set; }
public DateTime DateTime { get; set; }
}
private void Test(Dictionary<int, List<SimpleObject>> dataBaseObjDictionary)
{
using (var db = TpContext.Create())
{
var selectedObj = db.Contracts.Where(x => dataBaseObjDictionary.ContainsKey(x.PersonRef) && dataBaseObjDictionary.Values.Any(y => y.Any(a => x.FromDate <= a.DateTime) && y.Any(a=>a.DateTime >= x.UntilDate)));
}
}
我想这个应该可以了。看起来你指望y等于两个y。此外,您正在检查a是否大于until date和大于from date,所以我修复了这些。
var selectedObj = db.Contracts.Where(x => dataBaseObjDictionary.ContainsKey(x.PersonRef)
&& dataBaseObjDictionary.Values.Any(
y => y.Any(a => x.FromDate <= a.DateTime
&& a.DateTime <= x.UntilDate)
)
);