У меня есть список int
, который соответствует многим ID контракта. Идея заключается в том, что пользователь может добавить «избранное» Contract
, чей идентификатор затем хранится в базе данных. Я извлекаю список для этого человека, а затем отфильтровываю DataGrid
, поэтому отображаются только любимые Contract
.Критерий предиката не работает при добавлении из списка
Если я добавлю жестко закодированный ID
к списку Predicates
, нет никаких проблем, например;
criteria.Clear();
if (favouritesCheckBox.IsChecked == true)
{
criteria.Add(new Predicate<ContractModel>(x => x.ID == 6966));
}
Однако, когда я пытаюсь добавить от List<int>
, который содержит IDs
. Я делаю это так;
if (favouritesCheckBox.IsChecked == true)
{
for (int i = 0; i <= 48; i++)
{
if (favouriteContractList[i] != 0)
{
criteria.Add(new Predicate<ContractModel>(x => x.ID == favouriteContractList[i]));
}
}
}
Есть несколько вещей, из-за чего меня смущают. Во-первых, favouriteContractList.Count
приводит к 50
, однако я не могу сделать for (int i = 0; i <= 50; i++)
. Во-вторых, я распечатал favouriteContractList[i].ToString()
на протяжении всего цикла, и, похоже, нет проблемы с хранением IDs
. Однако, когда я проверяю свой ComboBox
для фильтрации DataGrid
, я остаюсь с пустой сеткой, когда я пытаюсь сделать это таким образом.
Это на .NET 3.5? – sll
не отвечает на ваш вопрос, но упростит и устранит некоторые проблемы. На первом месте используйте foreach (int num in favouriteContractList.Where (n => n! = 0)) {criteria.Add (new Predicate (x => x.ID == num);} –
sll
@ спасибо за вашу помощь, я добавлю его во избежание путаницы. – CBreeze