我有以下型号:
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_BankBindings
- ColumnIndex 和 TransactionPropertyName 感兴趣。我想做的是创建一个新的Dictionary<int,string>
,它将保留上述内容。
我试图通过LINQ检索它们:
var items = info.Rows.Where(n => n.Bindings.Where(x => x.TransactionPropertyName.Length > 0));
然而没有运气。任何建议都会受到欢迎(也许词典不是正确的类型)。
P.S。之后我做的是,我有一个CSV文件,我逐行读取,这些给我列索引位置和我感兴趣的目标属性。
答案 0 :(得分:1)
您可以使用SelectMany()
获取BankBindingsvar query = info.Rows
.SelectMany(r => r.Bindings)
.Where(x => x.TransactionPropertyName != null && x.TransactionPropertyName.Length > 0);
我之后做的是,我有一个CSV文件,我逐行阅读,这些给我列索引位置和我感兴趣的目标属性。
您的意思是TransactionPropertyName吗?进一步获取ColumnIndex和TransactionPropertyName
var dataForCsv = query
.Select(b => new { b.ColumnIndex, b.TransactionPropertyName});
然后,您可以循环访问dataForCsv,将这两个属性写入CSV文件。