我有这样的事情:
var myDictionary = new Dictionary<string, string>()
{
{"x" ,"y" }
};
var listIWantToRetriveWithDictKeys = MyDbContext.Documents.ToList().Where(c => myDictionary.ContainsKey(c.SomethingLikeX)).Select(id => id.documentID).ToList();
var listaIWantToRetriveWithDictValues = Documents.Where(o => myDictionary.ContainsValue(o.somethingLikeY.ToString())).Select(i => i.documentID).ToList();
我知道与列表一起使用的“包含”方法具有类似 ...where(c => myList.Contains(c.Id).... 但我想用字典实现类似的东西。我通常不会使用字典,我对它们知之甚少,但这里的用法似乎很合适。
目前该错误表明密钥为空,并且不允许我检索任何列表。这里的问题在哪里?键不是“x”吗?或者键应该是一个int?
确切的错误:
System.ArgumentNullException: 'Value cannot be null.
Parameter name: key'
在 Documents 之后删除 ToList() 时出错:
System.NotSupportedException:'LINQ to Entities 无法识别方法'Boolean ContainsKey(System.String)'方法,并且此方法无法转换为存储表达式。
有人将此问题标记为“空引用意味着什么”的重复。我知道我的查询中有一个空值,但对我来说,那里有关键。不是“x”吗?