CS0029 Не удается неявно преобразовать тип int? в int, не могу присвоить List
я без понятия в чем проблема т.к. вроде во время объявление List res я вроде присвоим ему тип int но во время инициализации как то несходится
public class Res
{
public string Name { get; set; }
public int Qty { get; set; }
}
public partial class UserControlOtchot : UserControl
{
Game_CenterEntities context;
List<Sales> salesFound;
List<(string Name, int Qty)> res;
bool StopDoSelectedDateChanged = false;
public UserControlOtchot()
{
InitializeComponent();
}
void FormOtchot()
{
if(dateFirst.SelectedDate != null && dateSecond.SelectedDate != null )
{
brnExport.IsEnabled = true;
txtName.IsEnabled = true;
salesFound = context.Sales.ToList();
salesFound = salesFound.Where(a => a.DateofSale >= dateFirst.SelectedDate && a.DateofSale <= dateSecond.SelectedDate).ToList();
if(txtName.Text != null)
{
String Name = txtName.Text;
salesFound = salesFound.Where(a => a.Games.Name.ToLower().Contains(Name.ToLower())).ToList();
}
DataGridSales.Items.Clear();
res = salesFound.GroupBy(x => x.Games.Name).Select(g => (Name: g.Key, Qty: g.Sum(k => k.Qty))).ToList(); //Ошибка возникает в этом моменте
res = res.OrderBy(z => z.Qty).ToList();
foreach (var item in res)
{
Res newRow = new Res();
newRow.Name = item.Name;
newRow.Qty = item.Qty;
DataGridSales.Items.Add(newRow);
}
}
}
Ответы (2 шт):
Автор решения: SetMa Chan
→ Ссылка
Вопрос решился приведением int? к int.
Заменено g.Sum(k => k.Qty) на (int)(g.Sum(k => k.Qty) ?? 0).
Автор решения: c942o
→ Ссылка
Самое простое решение для Nullable или int? вызывать метод GetValueOrDefault(), возвращающий значение по умолчанию (для int - 0) в случае если элемент = null
Тогда код не содержит приведения типов и проверок:
g.Sum(k => k.Qty.GetValueOrDefault())