У меня есть динамический c запрос, который возвращает мне динамические c столбцы (System.Linq.Dynamic.Core
):
var data = data.Select("new (col1, col2, col3)", "T", StringComparison.OrdinalIgnoreCase);
[
{ col1: "This", col2: 1.56, col3: "Something else" }
]
Теперь мне нужно указать тип каждого столбца. Пример:
[
{
col1: { value: "This", type: "string" },
col2: { value: 1.56, type: "decimal" }
}
]
Чтобы получить это, я думал о чем-то вроде:
var rows = data.Select(x => new {
Type = MyHelper.GetType(x),
Value = x
});
Но это не работает.
Произошла необработанная ошибка Наилучшее перегруженное совпадение методов для 'MyHelper.GetType (System.Reflection.PropertyInfo)' имеет несколько недопустимых аргументов
Я знаю, как получить тип
public static string GetType(PropertyInfo type)
{
return type.PropertyType.IsGenericType && type.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>) ? type.PropertyType.GetGenericArguments()[0].ToString().Replace("System.", "") : type.PropertyType.Name;
}
Но я не знаю, как построить запрос.
[ОБНОВЛЕНИЕ]
Это попытка, но не то, что мне нужно
var rows = data.Select(x => new {
Type = MyHelper.GetType(x.GetType()),
Value = x
});
[
{
"type": "<>f__AnonymousType0`3",
"value": {
"col1": "2019-10-15T00:00:00",
"col2": 0.00,
"col3": "abc"
}
},
]