从多层类创建字典

时间:2015-10-12 18:52:35

标签: c# linq dictionary

我有以下型号:

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文件,我逐行读取,这些给我列索引位置和我感兴趣的目标属性。

1 个答案:

答案 0 :(得分:1)

您可以使用SelectMany()

获取BankBindings
var 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文件。