【发布时间】:2011-03-01 23:38:23
【问题描述】:
我从 LINQ 开始,这是我的代码的 sn-p。
var filterList = new List<string>()
{
"ACRating",
"Axles",
"SafetyCodes",
"BuiltInFeatures"
}
foreach( var i in filterList )
{
var filter = i;
var xList = Vehicles.FilterSpecList( filter );
foreach ( var j in xList )
{
if ( xList.Count() == 1 ) /*Will Not Work since a list could have a single value.*/
{
switch( j.FeatureName )
{
case "ACRating":
v.AcRating = j.Value;
Console.WriteLine( j );
break;
}
}
else
{
switch( j.FeatureName )
{
//Am trying to still figure out how to get all the items in BuiltInFeatures, but you get the idea.
case "BuiltInFeatures"
{
v.BuiltInFeatures = "MP3" + "SUNROOF";
break;
}
}
}
}
}
我面临的问题是 xList.Count 不是查看列表值的可靠方法。是否有某种方法可以让我以某种方式将过滤器列表中的项目标记为列表 v/s 是单个值。所以当我在代码中做比较时,我不必依赖xList.Count。
【问题讨论】:
-
我想知道是否更容易构建字典而不是列表来定义过滤器。
-
我不确定你想用这段代码去哪里?什么是 xList?为什么需要“Count() == 1”检查?
-
@DaveShaw。 VehicleFilter 类返回两种类型的项目。这些项目在一个列表中。重复的项目是一个列表。单个项目是属性。因此,例如,列表将包含一个或多个标记为“BuiltInFeatures”的项目。这将作为列表处理。如果列表包含单个项目,它将被分配给一个属性。
-
啊,我明白了 :) 让我想想 2 分钟
-
Vehicles.FilterSpecList() 的返回类型到底是什么?在您的大多数示例中使用 var 应该显式声明,因为没有我们普通人可以识别的容易识别的隐式类型。