c#
  • c#-4.0
  • 2014-03-05 63 views -1 likes 
    -1

    我想选择并添加到列表使用lambda.can一些身体帮助我在哪里犯错误。下面的代码给我编译错误。Lambda表达式选择并添加

    string Param = "param1=test;param2=test2;param3=test3"; 
    List<SqlParameter> param=new List<SqlParameter>(); 
    var ef = d.Select(x => x.Split('=')) 
          .Select(y => new { id = y[0], val = y[1] }) 
          .Select(z=>sqlparam.Add(new SqlParameter(z.id, (object)z.val))); 
    
    +1

    什么是'd'?你不会在你的例子中显示它。 –

    回答

    4

    目前尚不清楚为什么你正在尝试使用Select这一点,但它不工作,因为List<T>.Addvoid回归方法,并且你在投影使用lambda表达式必须返回你的价值投射到。我建议你使用:

    string param = "param1=test;param2=test2;param3=test3"; 
    var parameters = d.Select(x => x.Split('=')) 
            .Select(y => new { id = y[0], val = y[1] }) 
            .Select(z => new SqlParameter(z.id, (object)z.val))) 
            .ToList(); 
    

    (注意如何散布在多条线路也使得它更简单阅读比有一个很长的行声明。)

    +0

    Thx john.It works.is there can add a way to add to parameter collection with out select – user2107843

    +0

    @ user2107843:你是指“SqlParameterCollection”(而不是“List ”)吗?我只是使用'foreach'循环。 –

    0

    是否使用选择重复你的收藏?使用简单的循环似乎更具可读性。

    string paramString = "param1=test;param2=test2;param3=test3";  
    IEnumerable<string[]> parameters = paramString.Split(';').Select(y => y.Split('=')); 
    
    List<SqlParameter> sqlParams = new List<SqlParameter>(); 
    
    foreach (string[] parameter in parameters) 
    { 
        sqlParams.Add(new SqlParameter(parameter[0], parameter[1])); 
    } 
    
    Console.WriteLine(sqlParams); 
    
    相关问题