我的目标是使用 LINQWhere
查询于ConfigurationManager.ConnectionStrings
控制台应用程序中的集合(假设一个新的 .NET 4.5 控制台应用程序添加了 System.Configuration 引用,并添加了相应的using
陈述)。
我从这个开始,这确实not work:
var relevantSettings =
ConfigurationManager.ConnectionStrings.Where(s => s.Name.StartsWith("Xyz"));
它告诉我:
方法 ' 的类型参数IEnumerable<TSource> System.Linq.Enumerable.Where<TSource(this IEnumerable<TSource>, Func<TSource,bool>)
' 无法从用法中推断出来。尝试明确指定参数。
这让我措手不及,所以我尝试用这个来检查我的理智,但是这确实not work either:
foreach (var settingsin ConfigurationManager.ConnectionStrings)
{
if (settings.Name.StartsWith("Xyz")) Console.WriteLine("Found one!");
}
它抱怨not有关foreach
声明,但关于.Name
位,出现错误:
无法解析符号“名称”
我知道可能有一些东西阻止编译器推断var
的类型,为了仔细检查我尝试了这个which does work:
foreach (ConnectionStringSettings settings in ConfigurationManager.ConnectionStrings)
{
if (connectionString.Name.StartsWith("Xyz")) Console.WriteLine("Found one!");
}
然而,除了解决我眼前的问题之外,这对我没有多大帮助。我想要理解这里发生了什么。
我只想使用一个简单的 LINQWhere
语句来获取我的 app.config 中的连接字符串的子集。为什么编译器阻止我这样做?