我正在尝试选择我在词典中映射的项目
这就是我想要做的事情
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'
任何人都可以帮我纠正我的代码。
答案 0 :(得分:2)
反之亦然:
where columnsMappingDictionary.Keys.Contains(dc.ColumnName))
答案 1 :(得分:2)
目前尚不清楚您的where
条件对您的语义有何看法。我看到两种可能性:
dc.ColumnName.Contains(...)
应用于字典中的每个键,或dc.ColumnName
我在下面讨论两种情况。
以下是将字符串与一组键匹配的方法:
where columnsMappingDictionary.Keys.Any(key => dc.ColumnName.Contains(key))
当dc.ColumnName
将任何键作为其子字符串时,此条件为真。
以下是检查dc.ColumnName
的密钥中是否存在columnsMappingDictionary
的方法:
where columnsMappingDictionary.ContainsKey(dc.ColumnName)