В настоящее время у меня есть оператор LINQ, который возвращает IQueryable для отображения в Telerik RadGrid. Этот оператор настроен на получение записей, соответствующих введенному периоду, а также для столбца «Премиум» установлено значение true. Затем он четко выбирает EmployeeID и ProjectID, используя свойство GroupBy.
Эти столбцы затем отображаются в RadGrid вместе со столбцом «PremiumCode».
В настоящее время мое утверждение работает для отображения ВСЕХ записей, которые соответствуют верхним учетным данным (Имя сотрудника, Проект, Премиум-код), но моя конечная цель - извлечь только те записи, которые DONT уже имеют " Премиум-код », присвоенный Проекту для данного сотрудника .
public static IQueryable GetEmptyPremiums(string Period)
{
DataContext Data = new DataContext();
var PR = (from c in Data.System_Times
where c.Period == Period && c.Premium == true
orderby c.System_Employee.LName
select c).GroupBy(s => s.EmployeeID & s.ProjectID).Select(x => x.FirstOrDefault());
return PR;
}
В настоящее время он отображается правильно, но отображаются все записи, а не только те, которые требуют PremiumCode.
![alt text](https://i.stack.imgur.com/7GQWn.png)
Есть ли способ переделать мою инструкцию LINQ, чтобы включить только те записи, которые требуют PremiumCode?
EDIT:
Джей,
Я пытался изменить ваше решение в соответствии со своими потребностями, но, к сожалению, безуспешно. Записи в таблице Премиум не добавляются до тех пор, пока не будет определен Премиум-код, поэтому никогда не будет нулевого «Премиум-кода».
Чтобы описать мою конечную цель немного яснее: я хочу показать информацию в виде сетки, как на картинке выше. Показанные записи будут отдельными записями времени, в которых значение bool «Premium» помечено как истинное, но не имеет записи PremiumCode в таблице «Premium».
Если проверенная запись имеет соответствующую запись в таблице Премиум (EmployeeID и ProjectID , совпадающую ), то она уже имеет набор Премиум-кода и не должна отображаться в сетки.
Если отмеченная запись не имеет соответствующей записи в таблице Premium (EmployeeID и ProjectID не соответствует ), тогда для требуется PremiumCode и ее необходимо отобразить в таблице.
Я полагаю, что этого можно достичь с помощью ".Any ()", но у меня возникают проблемы с выравниванием моего синтаксиса и логики для правильного отображения этой таблицы.