是否可以在一行代码中动态添加List <string>值?</string>

时间:2013-10-25 15:54:51

标签: c# asp.net string list

我有一个项目,我从formview字段获取值作为字符串(40多个字段)。我想减少代码中的行数,并希望将列表值组合到我从formview中收集的每个字符串值的单行代码中。

我的代码片段是:

...
List<string> mylist = new List<string>();

string str1 = e.NewValues["value1"].ToString();
myList.Add(str1);
string str2 = e.NewValues["value2"].ToString();
myList.Add(str2);
string str3 = e.NewValues["value3"].ToString();
myList.Add(str3);
string str4 = e.NewValues["value4"].ToString();
myList.Add(str4);
...

是否可以在一行代码中添加这些字符串,如:

myList.Add(string str1 = e.NewValues["value1"].ToString());

myList.Add((string) something... not getting the correct format.

我用sql参数做了类似的事情 即 -

 cmd.Parameters.Add(new OleDbParameter("ENTRY", OleDbType.VarChar) 
 { 
   Value = ENTRY,
   Direction = ParameterDirection.Input 
 }); 

- 但我已经搜索了很多尝试这样做的方法,但没有任何结果。我不确定我是不是正确搜索它还是不可能?

6 个答案:

答案 0 :(得分:4)

List<string> mylist = new List<string>
{
   e.NewValues["value1"].ToString(),
   e.NewValues["value2"].ToString()
   //etc...
};

使用Object Initializer可以在初始化时构建对象。

例如,如果您有一个班级:

class Test
{
   string test1 { get; set; }
   int test2 { get; set; }
}

您可以将其初始化为:

Test tester = new Test{ test1 = "some string", test2 = 5 };

答案 1 :(得分:2)

使用Linq怎么样?

类似的东西:

List<string> mylist = new List<string>();

myList.AddRange(e.NewValues.ToList().Select(s => s.ToString());

e.NewValues.ToList().ForEach(v => 
                        {
                          //can add additional manipulation or If clause here
                          //if you have some exclusions
                          myList.Add(v.ToString())
                         });

答案 2 :(得分:1)

试试这个:

myList.Add(e.NewValues["value1"].ToString());

答案 3 :(得分:1)

您可以使用

myList.AddRange(
   new[]{  
        e.NewValues["value1"].ToString(),   
        e.NewValues["value2"].ToString()  
});

或使用内联作业:

List<string> mylist = new List<string>
{
   e.NewValues["value1"].ToString(),
   e.NewValues["value2"].ToString()
};

答案 4 :(得分:0)

NewValues是一个字典,所以这样可以在单行中使用:

 List<string> mylist = e.NewValues.Values.ToList().ConvertAll(x => x.ToString());

更新

NewValues返回的是orderedDictionary,因此在您的eventHandler中放置此代码:

List<string> mylist = new List<string>();

foreach (DictionaryEntry item in e.NewValues)
{
    mylist.Add(item.Value.ToString());
}

或者如果mylist是一个类成员变量,那么只有foreach循环将填充列表。

答案 5 :(得分:0)

<form id="form1" runat="server">
<div>
<table>
<tr>    <td>    <asp:TextBox ID="txxt" runat="server" />    </td>    </tr>
<tr>    <td>    <asp:Button ID="btn" Text="test" runat="server" style="width: 36px" />    </td>    </tr>
<tr>    <td>  <asp:HiddenField ID="hdntest" runat="server" />    </td>    </tr>
</table>
</div>
</form>

Protected Sub btn_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btn.Click

    Dim s As String = ""
    s = txxt.Text
    s = s + ","
    hdntest.Value = hdntest.Value + s
    txxt.Text = hdntest.Value

End Sub