在Contains方法内部的linq查询中使用Dictionary
本文关键字:Dictionary 查询 linq Contains 方法 内部 | 更新日期: 2023-09-27 17:58:55
我正在尝试选择字典中有映射的项目
这就是我想做的
var columnsMapping = (from dc in sourceTable.Columns.Cast<DataColumn>()
where dc.ColumnName.Contains(columnsMappingDictionary.Keys.GetEnumerator())
select new
{
columnName = dc.ColumnName,
columnType = dc.DataType
}).ToDictionary(key => key.columnName, value => value.columnType);
我的字典是(字符串,字符串)类型的。
我一直收到这个错误
The best overloaded method match for 'string.Contains(string)' has some invalid arguments
cannot convert from 'System.Collections.Generic.Dictionary<string,string>.KeyCollection.Enumerator' to 'string'
有人能帮我纠正我的代码吗。
不清楚您对where
条件有什么语义。我看到两种可能性:
- 要将
dc.ColumnName.Contains(...)
应用于字典中的每个关键字,或者 - 您想要对照现有字典密钥检查CCD_ 3
下面我将讨论这两种情况。
以下是如何将字符串与一组密钥进行匹配:
where columnsMappingDictionary.Keys.Any(key => dc.ColumnName.Contains(key))
当dc.ColumnName
具有任何键作为其子字符串时,此条件成立。
以下是如何检查columnsMappingDictionary
:的密钥中是否存在dc.ColumnName
where columnsMappingDictionary.ContainsKey(dc.ColumnName)
反之亦然:where columnsMappingDictionary.Keys.Contains(dc.ColumnName))