LINQ查询-根据具有与字符串匹配的属性的值选择键?
|
我有一个词典
我需要选择Bar.Prop1匹配字符串值的第一个Foo。
public class Foo { }
public class Bar
{
public String Prop1 { get; set; }
}
现在我就这样...
foreach (var kvp in MyDictionary)
{
if (kvp.Value.Prop1 == theString)
{
var key = kvp.Key;
//Do something with it
break;
}
}
但这似乎不像LINQ查询那样干净。 ReSharper将其转换为:
foreach (var kvp in MyDictionary.Where(kvp => kvp.Value.Prop1 == theString))
{
var key = kvp.Key;
//Do something with it
//break; is unnecessary because I only get one kvp back anyways.
}
我只想要第一个匹配的项目,因为我从不希望获得超过一个KVP。这与业务逻辑背道而驰,因此单元测试可以解决这一问题。
没有找到相关结果
已邀请:
3 个回复
玩翁文醚碱
(或
)方法。
将返回与给定谓词匹配的任意多个第一个对象。如果许多违反您的期望和业务规则,这似乎是一个错误。这样对待它。
对于
,如果一个序列中有多个匹配项,将导致异常。
允许0或1,但不能超过1。如果使用这种方法,则需要捕获结果并将其与null进行比较,然后再执行其他操作(触发方法,访问属性等)。
香腔弥胯瓤
抬澈帅沮