Я пытаюсь получить username
из DataTable
на UserID
, используя LINQ
, используя этот пример.
//Example 1:
var user = (from dr in users.AsEnumerable()
where dr.Field<int>("UserID") == 2
select dr).First();
//Example 2:
string user = (from dr in users.AsEnumerable()
where dr.Field<int>("UserID") == 3
select dr.Field<string>("UserName")).First();
Два приведенных выше примера вызывают эту ошибку:
System.InvalidCastException: 'Указанное приведение недействительно.'
Однако запрос работает, если мой where clause
выполняет поиск по string
вместо int
.
string result = (from row in users.AsEnumerable()
where row.Field<string>("UserName") == "TUser"
select row.Field<string>("UserName")).First();
Как получить одно имя пользователя по идентификатору пользователя?
ОБНОВЛЕНИЕ:
Не уверен, что это актуально, но данные заполняются десериализацией файла .json
с использованием JSON.NET
Образец .json
[{
«ИД пользователя»: 2,
«Имя пользователя»: «Пользователь»,
«StatusID»: 1,
«CreateDate»: «2018-04-25T14: 02: 00»,
"CreateBy": "Admin",
«ID»: «9855626A-FEF1-4936-9EF6-DD896F80AE35»
}, {
«ИД пользователя»: 3,
"UserName": "TUser",
«StatusID»: 1,
«CreateDate»: «2018-04-25T14: 02: 00»,
"CreateBy": "Admin",
«ID»: «928D6099-0665-4FC8-BE4C-8E145E56E8BF»
}
]
И заполнение данных:
DataTable users = JsonConvert.DeserializeObject<DataTable>(File.ReadAllText(userPath));