我有一个地址列表,而地址定义如下:
public class Address
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime ModifiedDate { get; set; }
}
根据之前的调用,我有一个元组列表,而一个元组由地址 id 和修改日期组成。
e.g. List<Tuple<int, DateTime>>
现在我想获取所有具有相应 id 的地址,但前提是它们已被修改。
我已将元组列表转换为包含 id 和字典的 int 数组,而 id 是键,修改日期是值。
int[] ids;
Dictionary<int, DateTime> dates;
以下足以获取具有相应id的所有地址。
addressList.Where(a => ids.Contains(a.Id));
不幸的是,以下是不可能的:
例外:“LINQ to Entities 无法识别方法 'System.DateTime get_Item(Int32)' 方法,并且此方法无法转换为存储表达式。”
addressList.Where(a => ids.Contains(a.Id) && dates[a.Id] < a.ModifiedDate);
这个问题可以通过一个循环来解决,但我正在寻找一个更优雅的解决方案。
List<Address> modifiedAddressList = new List<Address>();
foreach (Address a in addressList)
{
if (a.ModifiedDate > dates[a.Id]) modifiedAddressList.Add(a);
}