是否可以在一行代码中动态添加列表<字符串>值

本文关键字:添加 动态 列表 字符串 代码 一行 是否 | 更新日期: 2023-09-27 18:36:51

我有一个项目,我从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 
 }); 
-

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

是否可以在一行代码中动态添加列表<字符串>值

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

使用对象初始值设定项将允许您在初始化对象时构建对象。

例如,如果您有一个类:

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

您可以像以下方式对其进行初始化:

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

使用 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())
                         });

试试这个:

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

你可以使用

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()
};

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 循环将填充列表。

<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