LINQ从多层类中选择第一项
本文关键字:一项 选择 LINQ | 更新日期: 2023-09-27 18:17:25
我有以下类:
public class IP_BankInfo
{
public App.BankType BankType { get; set; }
public string FileExtension { get; set; }
public List<IP_BankRows> Rows { get; set; }
}
public class IP_BankRows
{
public int RowIndex { get; set; }
public List<IP_BankBindings> Bindings { get; set; }
}
public class IP_BankBindings
{
public int ColumnIndex { get; set; }
public string ExpectedHeader { get; set; }
public string TransactionPropertyName { get; set; }
}
我试图选择第一个IP_BankRows
,如果它包含任何Bindings
,其中TransactionPropertyName
不是空的。这是我的尝试:
var firstItem = info.Rows.FirstOrDefault(n => n.Bindings.Where(x => !string.IsNullOrWhiteSpace(x.TransactionPropertyName)));
在第二种条件(n=>n.Bindings...)
下失效。我需要怎样更改对账单?
Where
在本例中返回IEnumerable<T>
,而这不是一个布尔值。您需要使用的是.Any()
。
var firstItem = info.Rows.FirstOrDefault(n => n.Bindings.Any(x => !string.IsNullOrWhiteSpace(x.TransactionPropertyName)));
明白了
var firstItem = info.Rows.Where(
n => n.Bindings.Any(
x => !string.IsNullOrWhiteSpace(x.TransactionPropertyName)
)
).FirstOrDefault();