string greeting = "";
foreach (System.Collections.Generic.ICollection<object> x in greetingRecommendation.Resolution.Values)
{
foreach (var y in x)
{
greeting = (string)y;
}
}
我需要找回&#34;早安&#34;里面的价值&#34; greetingRecommendation.Resolution.Values&#34;我这样做(使用foreach)和它的工作。但是有更好的方法来访问该单一值。
答案 0 :(得分:1)
您可以使用LINQ以更简单的方式查询集合。
让我们以下面的集合为例:
var objCollection = (ICollection<object>) new List<object>
{
"Good Morning",
"Good Afternoon",
"Good Night"
};
现在我们可以使用以下内容提取特定索引处的第一个,最后一个或项目:
var firstItem = objCollection.First(); // returns "Good Morning"
var lastItem = objCollection.Last(); // returns "Good Night"
var itemAtIndex1 = objCollection.ElementAt(1); // returns "Good Afternoon"
以前的所有版本都有OrDefault
个版本。不同之处在于First
如果objCollection
没有商品会引发异常,但FirstOrDefault
只会返回default(object)
(顺便说一下是null
) objCollection
没有任何内容。
举一个例子,这就是OrDefault
变体的使用方式:
var firstItem = objCollection.FirstOrDefault(); // returns "Good Morning"
var lastItem = objCollection.LastOrDefault(); // returns "Good Night"
var itemAtIndex99 = objCollection.ElementAtOrDefault(99); // returns null, because `objCollection` has only three items and the index 99 doesn't exist on it
在greetingRecommendation.Resolution.Values
的场景中,可以使用以下内容来检索集合的第一项:
var greeting = greetingRecommendation.Resolution.Values.FirstOrDefault() as string;
我们假设Values
属性属于ICollection<object>
类型。
该行将确保:
Values
属性没有项目,则不会抛出任何异常,并且会返回default(object)
。Values
属性中的第一项将安全地投放到string
,以避免在包含无法投放到string
的值时出现问题。如果无法投放该值,则会返回default(string)
(null
)。greeting
将包含null
或string
,其中Values
属性的第一个值。不要忘记在using指令中添加using System.Linq;
以便能够使用LINQ。
我已经在以下链接中准备了一个.NET Fiddle,以便看到这样的LINQ操作: