Рейтинг:
0
Richard Deeming
Если имя свойства известно во время компиляции, приведите ExpandoObject
к dyanmic
, и получить доступ к собственности напрямую:
var getlist = grdfeatchobjlist.Select((dynamic x) => x.batchId == Txtbatchcode.Text);
Для динамического имени свойства, которое неизвестно до времени выполнения, приведите
ExpandoObject
к
IDictionary<string, object>
, и использовать индексатор:
var getlist = grdfeatchobjlist.Select((IDictionary<string, object> x) => x["batchId"] == Txtbatchcode.Text);
Member 8735045
Спасибо за комментарий Ричард , я стараюсь использовать это
Member 8735045
Я хочу этого ,
спасибо, Ричард.
var grdfeatchobjlist =grdproductitem.ItemsSource.Метод oftype&ЛТ;expandoobject и GT;().Выберите((динамически х) =&ГТ; х);
long StockId = конвертировать.ToInt64(stockId.Текст);
(из u в grdfeatchobjlist, где u.stockId == StockId select u).Список()
.По каждому элементу(у =&ГТ; {
u.newExpiryDate = конвертировать.Объект Todatetime(Txtexpierydate.Текст).ToString("гггг-ММ-ДД");
u.newSaleRate = Txtnewretailmerp.Text;
u.newMrp = Txtnewretailmerp.Text;
u.purchaseRate = Txtnewpurchasemrp.Text;
u.Status = "да";
u.createdby = LoginUserDetails.loginUserName.Метод toString();
});
Member 8735045
если
var datalist = JsonConvert.DeserializeObject<List<expandoobject>>(jsonResult, конвертер);
объект имеет значение null, что время ExpandoObject не может быть DeserializeObject
чего нам не хватает
Richard Deeming
Предполагая, converter
является примером того, что ExpandoObjectConverter
класс, этот код должен работать. Убедитесь, что свойство существует в ваших данных JSON и что вы правильно подобрали регистр этого свойства.
(Напр: stockId
это не то же самое, что StockId
или stockID
.)
Member 8735045
Это мой json
{
"идентификатором": 1,
"оприд": 1,
"код продукта": 143654,
"stockId": 122104,
"батчид": 122104,
"rateId": 122104,
"короткое имя": "МСП",
"бачно": "150419",
"expiryDate": "2022-05-28",
"ППМ": 60.0,
"салерат": 60,0,
"purchaseRate": 13.74,
"количество": 500,0,
"storename для": "Главный Универсальный Магазин",
"newMrp": null,
"newSaleRate": null,
"newExpiryDate": null,
"newShortName": null,
"createdby": null,
"статус": null
}
Но только не нулевое значение, как "ППМ": 60.0, "saleRate": 60.0
и "newSaleRate": null, это не конвертация
Richard Deeming
Что JSON-это отдельный объект, а не список объектов.
Что десериализации JSON в один ExpandoObject
включает в себя все null
свойства, как и ожидалось.
Member 8735045
Множественный список json
{
"идентификатором": 1,
"оприд": 1,
"код продукта": 143654,
"stockId": 122104,
"батчид": 122104,
"rateId": 122104,
"короткое имя": "МСП",
"бачно": "150419",
"expiryDate": "2022-05-28",
"ППМ": 60.0,
"салерат": 60,0,
"purchaseRate": 13.74,
"количество": 500,0,
"storename для": "Главный Универсальный Магазин",
"newMrp": null,
"newSaleRate": null,
"newExpiryDate": null,
"newShortName": null,
"createdby": null,
"статус": null
},
{
"идентификатором": 1,
"оприд": 1,
"код продукта": 143654,
"stockId": 2018030010140000053,
"batchId": 2018030010200000033,
"rateId": 122104,
"shortName": null,
"бачно": "220",
"expiryDate": null,
"ППМ": 60.0,
"saleRate": 0.0,
"purchaseRate": 13.74,
"количество": 10.0,
"storeName": null,
"newMrp": null,
"newSaleRate": null,
"newExpiryDate": null,
"newShortName": null,
"createdby": null,
"статус": null
},
Я использую
var jsonSettings = новые JsonSerializerSettings()
{
DefaultValueHandling = DefaultValueHandling.Игнорировать,
Форматирование = Newtonsoft.Json.Форматирование.Изрезанный,
TypeNameHandling = TypeNameHandling.All,
NullValueHandling = NullValueHandling.Включать
};
но проблема все равно остается
я стараюсь изо всех сил
спасибо за ответ
Richard Deeming
После добавления недостающего [
и ]
символы в ваш JSON, а также добавление ExpandoObjectConverter
пример для подражания jsonSettings.Converters
список, код все еще десериализует список с правильным null
значение свойства.
var jsonSettings = new JsonSerializerSettings()
{
DefaultValueHandling = DefaultValueHandling.Ignore,
Formatting = Newtonsoft.Json.Formatting.Indented,
TypeNameHandling = TypeNameHandling.All,
NullValueHandling = NullValueHandling.Include,
Converters = { new ExpandoObjectConverter() }
};
var dataList = JsonConvert.DeserializeObject<List<ExpandoObject>>(jsonResult, jsonSettings);
Вот демонстрация выполнения кода:
.NET Скрипка[
^]
Member 8735045
Спасибо Ричард
я проверил результат на своей стороне и получаю правильный результат в представлении результата,
если вы проверили как представление результатов, так и динамическое представление, я не могу получить newShortName в Dynamic Vewi. я думаю, что Dynamic Vewi был привязан к
грдпродуктитем.ItemsSource = dataList ;
вот почему свойство newShortName не может быть создано после JsonConvert.DeserializeObject< & gt;