nik varma Ответов: 1

Как применить динамический фильтр к ienumerable?


Привет Ребята,

Как я могу применить фильтр к "IEnumerable"? Список свойств "GetTaskAllocatedOnFilter" любое значение может быть нулевым на основе того, что мне нужны данные

Пожалуйста, помогите, также дайте знать, если вы, ребята, хотите получить какую-либо другую информацию, чтобы доказать мне решение по этому вопросу

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

публичный класс GetTaskAllocatedOnFilter
{
публичный Guid? Project_ID { get; set; }
публичный Guid? Идентификатор emp_id { получить; набор; }
публичный Guid? Task_ID { get; set; }
}
public IEnumerable<task_allocationmodel> GetTaskAllocatedList(GetTaskAllocatedOnFilter getOnFilter)
{
_DALTaskAllocation = новое DALTaskAllocation();
DataTable taskAllocatedList = _DALTaskAllocation.GetTaskAllocatedList(getOnFilter);
IEnumerable< task_allocationmodel> IEtaskAllocationList = taskAllocatedList.AsEnumerable (). Select (row => new Task_AllocationModel() {
Emp_ID = новый Guid (строка ["Emp_ID"].Метод toString()),
Emp_Name = строка ["Emp_Name"].Метод toString(),
Hrs = Конвертировать.ToInt16 (строка ["Hrs"]),
Location = строка ["местоположение"].Метод toString(),
- Не Боитесь Ли = Конвертировать.ToInt16(строка ["Location_ID"]),
Месяц = Конвертация.ToInt16 (строка ["месяц"].Метод toString()),
Project_ID = новый Guid (строка ["Project_ID"].Метод toString()),
Project_Name = строка ["Project_Name"].Метод toString(),
Reporting_Manager = строка ["Reporting_Manager"].Метод toString(),
Task_ID = новый Guid (строка ["Task_ID"].Метод toString()),
Итого = Конвертация.ToInt16 (строка ["всего"].Метод toString()),
Type_ID = Преобразовать.ToInt16 (строка ["Type_ID"].Метод toString()),
Год = Конвертация.ToInt16 (строка ["год"].Метод toString()),
Createddate = Конвертировать.ToDateTime (строка ["Createddate"].Метод toString()),
Создано = строка["обработки"].Метод toString()
});
если ((идентификатор GUID.Пустой == getOnFilter.Идентификатор emp_id и усилитель; & идентификатор GUID.Пустой == getOnFilter.Project_ID) & & amp; Guid.Empty != getOnFilter.идентификатор задачи)

если ((идентификатор GUID.Пустой == getOnFilter.Идентификатор emp_id и усилитель; & идентификатор GUID.Пустой == getOnFilter.Task_ID)& & amp; Guid.Empty != getOnFilter.Project_ID)

если ((идентификатор GUID.Пустой == getOnFilter.Project_ID & & amp; Guid.Empty == getOnFilter.Task_ID) и усилитель; & идентификатор GUID.Пусто != getOnFilter.Идентификатор emp_id)

если ((идентификатор GUID.Пустой == getOnFilter.Project_ID & & amp; Guid.Empty == getOnFilter.Task_ID) и усилитель; & идентификатор GUID.Пусто != getOnFilter.Идентификатор emp_id)

вернуться IEtaskAllocationList;
}

1 Ответов

Рейтинг:
1

Thomas Daniels

Вы можете использовать .Where метод расширения: Перечислимый.Где(TSource) Для (Интерфейс IEnumerable(Метод), Функция(Метод Логических)) (Системы.В LINQ)[^]:

using System.Linq;
// Example: 
IEnumerable<int> old = new int[] { 0, 1, 2, 3 };
IEnumerable<int> _new = old.Where(x => x != 0);

В приведенном выше примере, _new будет содержать все элементы из old кроме 0: предикат для x является x != 0 Вы можете адаптировать этот пример фильтрации к своей кодовой базе.