Member 12766235 Ответов: 2

Входная строка имела неверный формат


код:
SharedUsers общественная bool(строка strPermission, int идентификатор пользователя)
{
строки sharedUsers = "";
bool isShared = false;
if (strPermission = = "" | / strPermission = = null)
{
isShared = false;
}
ещё
{
JObject objParam = JObject. Parse(strPermission);
JToken aggregateToken = objParam.SelectToken ("specificUsers");

по каждому элементу (ВАР продукт в aggregateToken)
{
sharedUsers += item.SelectToken ("пользователи").Значение & lt;string> () + ",";
}

if (sharedUsers != string.Пустой)
{
sharedUsers = общие пользователи.TrimEnd (','). TrimStart(',');
если (sharedUsers != "")
{
int[] arrUsers = sharedUsers. Split (',').Выберите (x = & gt; Convert.ToInt32 (x)).ToArray (); / / здесь возникает ошибка
isShared = (arrUsers.Содержит(userId) | | arrUsers.Any(x => AppSession.User.UserGroups.Содержит(x)));
}
}
}

возвращение isShared;
}

Что я уже пробовал:

Входная строка не была корректным форматом произошла ошибка

2 Ответов

Рейтинг:
2

OriginalGriff

Тогда ясно, что одно из значений в вашей строке, разделенной запятыми, не является целым числом.
Используйте отладчик, посмотрите на свою входную строку и посмотрите, сможете ли вы определить, какую именно. Тогда начинайте смотреть куда sharedUsers и выясните, почему это не то, что вы думаете.

Мы не можем сделать ничего из этого для вас - у нас нет вашего кода, у нас нет ваших данных, и мы не смогли бы запустить его, если бы мы это сделали!


Рейтинг:
19

Sunasara Imdadhusen

Вы можете использовать следующее решение, если строка содержит пустое значение, то она будет автоматически удалена из списка. Это рабочий пример.

string sharedUsers = "1,2,3,5,4,5,6,7,8,10,";
int[] arrUsers = sharedUsers.Split(new string[] { "," }, System.StringSplitOptions.RemoveEmptyEntries).Select(x => System.Convert.ToInt32(x)).ToArray();


С уважением,
Имдадхусен


Karthik_Mahalingam

5