获得了一个字典,其中ID为密钥。每个值都是一个List,其中包含一个包含日期时间的类。
我想从数据库中获取所有合同,其中列表中的每个日期都在合同之间,直到-date。每个人可能有多个。
我不能使用.Any()函数。如果我这样做,我将收到此错误:“除了Contains()运算符之外,本地序列不能用于查询运算符的LINQ to SQL实现。”
这是一个使用.iny方法的示例,该方法不适用于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)));
}
}
答案 0 :(得分:0)
我认为应该这样做。看起来你依赖于y和两个y.anys是一样的。此外,您正在检查a是否大于日期且大于日期,因此我修复了这些。
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)
)
);