从lambda中调用一个函数

Sim*_*mon 1 .net c# lambda

有没有办法从lambda表达式中调用函数?

我们目前有以下内容

 var obj = m.Select(x => x.ToDictionary(y => y.ColumnName, y => y.ColumnValue))
             .ToList();


private static string BuildNewContent(EnumColumnType columnType, String columnValue, List<TableColumn> CurrentRow)
    {
}
Run Code Online (Sandbox Code Playgroud)

所以我们真正想做的是将BuildNewContent的返回值作为字典的值添加.如下所示: -

var obj = m.Select(x => x.ToDictionary(y => y.ColumnName, BuildNewContent(y => y.ColumnType, y=> y.ContentValue, y)))
             .ToList();
Run Code Online (Sandbox Code Playgroud)

我意识到我们可以通过简单的循环轻松实现这一点,但是,我们希望看到如何使用Lambda(如果可能的话)

更新 - 根据要求,M的类型是TableViewModel,它是一个嵌套列表

public class TableViewModel 
{
   public List<List<TableColumn>> Grid { get; set; }
}

 public class TableColumn
{
    public TableColumn() { }

    public TableColumn(string columnHeader, string columnValue, int columnWidth, EnumColumnType columnType, string columnName)
    {
        this.ColumnHeader = columnHeader;
        this.ColumnValue = columnValue;
        this.ColumnWidth = columnWidth;
        this.ColumnType = columnType;
        this.ColumnName = columnName;
    }

    public string               ColumnHeader    { get; set; }
    public string               ColumnName      { get; set; }
    public string               ColumnValue     { get; set; }
    public int                  ColumnWidth     { get; set; }
    public EnumColumnType       ColumnType      { get; set; }  
}
Run Code Online (Sandbox Code Playgroud)

pet*_*ter 5

你几乎是对的

var obj = m.Select(x => x.ToDictionary(
    y => y.ColumnName, y => BuildNewContent(y.ColumnType, y.ContentValue, y))).ToList();
Run Code Online (Sandbox Code Playgroud)

但我怀疑不是y你要提供的最后一个参数x或其他值,因为y可能不是类型List<TableColumn>