我有DataTable
,我想更新其记录。我想更新多列的记录,我想为此编写扩展方法。我不确定它会接受什么参数以及它将返回什么。我的代码
public static class ExtensionClass
{
public static IEnumerable<object> UpdateColumns(this IEnumerable<object> e, List<string> columns, List<object> values)
{
int index = 0;
var rec = e.First();
foreach (string col in columns)
{
}
}
}
我在SetField()
上没有rec
这样的内容。我缺少什么?
答案 0 :(得分:0)
显然,在这种情况下,rec是对象的类型,因此它不具有SetField()方法。您应该声明IEnumerable&lt;&gt;的类型。 你看看了吗: http://msdn.microsoft.com/en-us/library/bb336477%28v=vs.110%29.aspx
答案 1 :(得分:0)
我有一个DataTable,我想更新它......
因此,您希望为dataTable编写扩展方法。
我想更新多列的记录......
我认为您希望将dataTable的所有行的列值更新为特定值。我建议您使用library(tidyverse)
df2 <- df %>%
mutate(rows = map(rows, seq)) %>%
unnest()
而不是IDictionary<string, TValue>
之类的单独列表,然后扩展方法可以是这样的:
List<string> columns, List<object> values
并称之为:
public static void UpdateColumns<TValue>(this DataTable dataTable,
IDictionary<string, TValue> columnValuePair)
{
foreach (DataRow dataRow in dataTable.Rows)
{
foreach (var pair in columnValuePair)
{
dataRow[pair.Key] = pair.Value;
}
}
}
请注意,您无需返回
var columnValuePair = new Dictionary<string, string> { {"ColumnName1", "newValue1" }, {"ColumnName2", "newValue2" } }; yourDataTable.UpdateColumns(columnValuePair);
作为此扩展方法的结果,并将其设置为DataTable
。