انتخاب ماکزیمم از لیست تو در تو
با سلام
لیستی به صورت زیر داریم
List<List<Personel>> ListInDayes = new List<List<Personel>>();
کلاس Personel :
class personel
{
public int day = 0;
public double average = 0;
}
میخوام ماکزیمم average رو در روز خاص مثل day =25 پیدا کنم.
ممنون میشم برای قطعه کدش راهنمایی کنید.
نقل قول: انتخاب ماکزیمم از لیست تو در تو
سلام
var maximum = ListInDayes.Max(c => c.Where(p => p.Day == 25).Max(p => p.Average));
نقل قول: انتخاب ماکزیمم از لیست تو در تو
نقل قول:
نوشته شده توسط
محمد آشتیانی
سلام
var maximum = ListInDayes.Max(c => c.Where(p => p.Day == 25).Max(p => p.Average));
ممنون جناب آشتیانی .ولی خطا داد :
An unhandled exception of type 'System.InvalidOperationException' occurred in System.Core.dll
Additional information: Sequence contains no elements
خودم به این شکل نوشتم (راستش میخواستم با لامبدا بصورت خطی بنویسم.) :
private static double GetMaxAverage(List<List<Personel>> ListLstInDayes, int day)
{
double max = 0;
var l = from a in ListLstInDayes
from k in a
where k.day == day
select k;
foreach (Personel item in l)
if (item.Average > max) max = item.Average;
return max;
}
نقل قول: انتخاب ماکزیمم از لیست تو در تو
سلام مجدد
به خاطر اینه که یکی از لیست های داخلی شما ، هیچ آیتمی نداره ، به اینصورت اصلاح کنید
var maximum= ListInDays.Where(c => c.Any()).Max(c => c.Where(p => p.Day == 25).Select(p => p.Average).Max());
ضمن اینکه چک کنید لیست اصلیتون هم دارای آیتم باشه ، مثلا
if (ListInDays.Any())
{
var maximum= ListInDays.Where(c => c.Any()).Max(c => c.Where(p => p.Day == 25).Select(p => p.Average).Max());
}
* اصلاح برای اعداد منفی
نقل قول: انتخاب ماکزیمم از لیست تو در تو
جناب آشتیانی احسنت و ممنون