foreach 是获取对象属性值的唯一选择吗?(如果我将其存储在 var 类型中)
IList<SampleClass> samples = GetIList();
var onesample = samples.Select(p => p.Propy == "A").FirstOrDefault();
我是否需要遍历“onesample”以使用 foreach 或任何更好的方式获取值?
试试这个。
IList<SampleClass> samples = GetIList();
SampleClass onesample = samples.FirstOrDefault(p => p.Propy == "A");
您不需要 select 或 where ...您可以在 FirstOrDefault 上应用 lambda express
IList<SampleClass> samples = GetIList();
var onesample = samples.FirstOrDefault(p => p.Propy == "A");
我知道 OP 的问题完全没有帮助,但是如果有人发现自己在这里(就像我一样)因为他想将 LINQ 与 IList 一起使用(一个很好的例子是试图在 WPF Combobox 的 SelectionChanged 处理程序中获取选定的项目),这是我的解决方案:
投射IList
到IEnumerable<T>
:
private void Combobox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
string item = ((IEnumerable<object>)e.AddedItems).FirstOrDefault() as string;
Console.WriteLine($"Combo item is: '{item}'");
}
IList<SampleClass> samples = GetIList();
var onesample = samples.Select(p => p.Propy == "A").FirstOrDefault();
应该..
IList<SampleClass> samples = GetIList();
var onesample = samples.Where(p => p.Propy == "A").FirstOrDefault();
这将为您提供一个实例SampleClass