gpt4 book ai didi

c# - 泛型方法和匿名类型

转载 作者:太空狗 更新时间:2023-10-29 20:13:29 25 4
gpt4 key购买 nike

是否可以创建这样的代码:

private static string GetInsertString<TDto>()
{
var type = typeof(TDto);
var properties = type.GetProperties().Where(Where);
var tableName = type.Name;

return string.Format("INSERT INTO {0} ({1}) VALUES ({2});",
tableName,
string.Join(",", properties.Select(x => x.Name).ToArray()),
string.Join(",", properties.Select(x => string.Format("@{0}", x.Name.ToLower())).ToArray()));
}

与这样的匿名类型一起工作:

var point = new { X = 13, Y = 7 };

附言:

输出将是:

INSERT INTO Anonymous (X, Y) values (13, 7)

当然你可能想提供表名。

最佳答案

您将无法使用匿名类型指定类型参数,但如果将对象作为参数传递给它,则可以使用类型推断来获取类型:

private static string GetInsertString<TDto>(TDto dto)
{
var type = typeof(TDto);
var propertyNames = type.GetProperties().Where(Where).Select(x => x.Name);

return string.Format("INSERT INTO {0} ({1}) VALUES ({2});",
type.Name,
string.Join(",", propertyNames),
string.Join(",", propertyNames.Select(x => string.Format("@{0}", x.ToLower())));
}

然后调用方法:var insertString = GetInsertString(new { X = 13, Y = 7 });

关于c# - 泛型方法和匿名类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24403152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com