在 C# 中,有没有一种方法可以在一条语句中实例化和初始化 SqlDataRecord?
而不是在两个语句中这样做:
var record = new SqlDataRecord(new SqlMetaData("n", SqlDbType.BigInt));
record.SetInt64(0, someLongVal);
我想用一条语句而不是两条语句来完成。这可能吗?
编辑:我现在想要一种简化的 b/c 方式,这段代码在一个循环中,我想将其放入 Linq 语句中。但是当我将它转换为 Linq 时,我不喜欢三行 lambda 的外观来实例化、设置值和返回。所以我正在寻找替代方案。纯粹的美学。
最佳答案
您可以使用带有扩展的方法链!?
public static class DataRecordExtension
{
public static SqlDataRecord WithInt64(this SqlDataRecord record, int ordinal, long value)
{
record.SetInt64(ordinal, value);
return record;
}
}
...然后像这样使用它:
var record = new SqlDataRecord(new SqlMetaData("n", SqlDbType.BigInt)).WithInt64(0, someValue);
或者根据您的需要构建一个助手....
public class DataRecordHelper
{
public static SqlDataRecord CreateDataRecordInt64(int ordinal, long value, params SqlMetaData[] metaData)
{
var record = new SqlDataRecord(metaData);
record.SetInt64(ordinal, value);
return record;
}
}
关于c# - 你能在一条语句中实例化和初始化一个 SqlDataRecord 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41473161/