#json #asp.net-mvc #asp.net-web-api #json.net #angular9
Вопрос:
Я работаю над небольшим приложением, использующим angular9 и .net MVC API.
В интерфейсе angular пользователь может выбрать имя таблицы из выпадающего списка. Как только выбрано имя таблицы, в ней отображаются все столбцы, доступные в этой таблице. Пользователь может выбрать имена столбцов, которые его интересуют, а также порядок сортировки этих столбцов. Это будет сохранено в таблице базы данных. например, пользователь выбирает Emp_Name(порядок сортировки 2), Emp_Id(порядок сортировки 1) и Emp_Address(порядок сортировки 3)
Я хочу вернуть json с выбранными именами столбцов в качестве свойств, и эти свойства должны иметь тот же порядок сортировки, что и пользовательские предпочтения. JsonPropertyOrder нельзя использовать, так как порядок свойств является динамическим и может изменяться.
Ниже приведен мой код, который возвращает JSON с порядком свойств в виде Emp_Name, Emp_Id и Emp_Address.
var model = ConvertDataTable<Employee>(dt);
var serilaizeJson = JsonConvert.SerializeObject(model , Formatting.None,
new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore
});
.
.
.
private static List<T> ConvertDataTable<T>(DataTable dt)
{
List<T> data = new List<T>();
foreach (DataRow row in dt.Rows)
{
T item = GetItem<T>(row);
data.Add(item);
}
return data;
}
private static T GetItem<T>(DataRow dr)
{
Type temp = typeof(T);
T obj = Activator.CreateInstance<T>();
foreach (DataColumn column in dr.Table.Columns)
{
foreach (PropertyInfo pro in temp.GetProperties())
{
if (pro.Name == column.ColumnName)
//if(dr[column.ColumnName] != null amp;amp; dr[column.ColumnName] != DBNull.Value)
pro.SetValue(obj, dr[column.ColumnName].ToString(), null);
else
continue;
}
}
return obj;
}
Я хочу, чтобы порядок был Emp_Id, Emp_Name и Emp_Address