Есть ли способ заставить этот запрос работать?
var employeesSU = from s in db.HolidayRequestForms
where s.Employee.Site.SiteName == searchSitehols || searchSitehols == null || searchSitehols == ""
select s;
var querythpmpro = (from r in db.HolidayRequestForms
where r.Employee.Site.SiteName == employeesSU.FirstOrDefault()
group r by r.MonthOfHoliday into g
select new { Value = g.Key, Count = g.Sum(h => h.HoursTaken) }
).OrderBy(e => e.Value);
В настоящее время я получаю эту ошибку:
Error 4 Operator '==' cannot be applied to operands of type 'string' and 'HolidayTracker.Models.HolidayRequestForm' C:\Projects\HolidayTrackerMainProject\HolidayTracker - Working - 04-03 - Copy\HolidayTracker\Controllers\MetricsController.cs 170 39 HolidayTracker
есть ли способ обойти эту ошибку? Или я не могу просто сравнить их?
Или, если SiteName является string, то, очевидно, вы не можете сравнить его с элементом employeeSU, HolidayRequestForm не является строкой.
Да SiteName будет строкой. И да, HolidayRequestForm - это не строка, а таблица sql, я думаю, но мне нужен только один элемент из нее. Но спасибо теперь понятно
Я вижу, что вам нужен только один элемент, следовательно, FirstOrDefault(), но как именно вы хотите сравнить строку вашей таблицы со строкой?
Вы видите, что я использую это с диаграммами Google, и мне нужен способ в пользовательском интерфейсе, чтобы пользователь мог выбрать сайт (что я делаю с раскрывающимся списком, следовательно, с переменной employeeSU), но я даже не уверен, что это сработает. способ
Просто попробовал это, следуя тому, что вы сказали, и это сработало! спасибо @RenéVogt





var querythpmpro = (from r in db.HolidayRequestForms
where r.Employee.Site.SiteName == employeesSU.FirstOrDefault().Name // or whatever field you want to compare
group r by r.MonthOfHoliday into g
select new { Value = g.Key, Count = g.Sum(h => h.HoursTaken) }
).OrderBy(e => e.Value);
В какой строке возникает эта ошибка? Я думаю, это
s.Employee.Site.SiteName == searchSitehols... что такоеSiteName? Очевидно, что это неstring.