我有一个项目,我从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
});
- 但我已经搜索了很多尝试这样做的方法,但没有任何结果。我不确定我是不是正确搜索它还是不可能?
答案 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