ddgjgj Ответов: 2

Тип условного выражения не может быть определен, так как нет неявного преобразования между int и string


Это код, и у меня есть ошибка в смелом мире :

var isIdSortable = Convert.ToBoolean(Request["bSortable_1"]);

           var isNameSortable = Convert.ToBoolean(Request["bSortable_2"]);
           var isAddressSortable = Convert.ToBoolean(Request["bSortable_3"]);
           var isTownSortable = Convert.ToBoolean(Request["bSortable_4"]);

           var sortColumnIndex = Convert.ToInt32(Request["iSortCol_0"]);
           Func<Order, string> orderingFunction = (c =>  sortColumnIndex == 1 && isIdSortable ? c.OrderID :
             sortColumnIndex == 2 && isNameSortable ? c.CustomerID :
                                                          sortColumnIndex == 3 && isAddressSortable ? c.ShipAddress :
                                                          sortColumnIndex == 4 && isTownSortable ? c.ShipCountry :
                                                          "");



OrderID - это INT , CustomerID-адрес и страна-строка

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

я только что объяснил эту проблему выше в разделе

2 Ответов

Рейтинг:
7

F-ES Sitecore

использовать

c.OrderID.ToString()


скорее, чем

c.OrderID


Рейтинг:
12

Richard Deeming

Как говорится в сообщении об ошибке, одно из свойств, которое вы пытаетесь вернуть, определяется как int, и не может быть неявно преобразован в string. Я подозреваю, что либо OrderID, CustomerID или оба.

Вам нужно будет добавить .ToString() вызов в int собственность.

c.OrderID.ToString()

Вероятно, также было бы лучше переместить условный доступ снаружи из Func, так что вы оцениваете его только один раз:
Func<Order, string> orderingFunction;
if (sortColumnIndex == 1 && isIdSortable)
{
    orderingFunction = c => c.OrderID.ToString();
}
else if (sortColumnIndex == 2 && isNameSortable)
{
    orderingFunction = c => c.CustomerID.ToString();
}
else if (sortColumnIndex == 3 && isAddressSortable)
{
    orderingFunction = c => c.ShipAddress;
}
else if (sortColumnIndex == 4 && isTownSortable)
{
    orderingFunction = c => c.ShipCountry; // Really? Is it the town, or the country?
}
else
{
    orderingFunction = c => string.Empty;
}