View Full Version : سوال: انتخاب ماکزیمم از لیست تو در تو
دلتنگ اسمان
شنبه 21 اردیبهشت 1398, 19:47 عصر
با سلام
لیستی به صورت زیر داریم
List<List<Personel>> ListInDayes = new List<List<Personel>>();
کلاس Personel :
class personel
{
public int day = 0;
public double average = 0;
}
میخوام ماکزیمم average رو در روز خاص مثل day =25 پیدا کنم.
ممنون میشم برای قطعه کدش راهنمایی کنید.
محمد آشتیانی
یک شنبه 22 اردیبهشت 1398, 10:00 صبح
سلام
var maximum = ListInDayes.Max(c => c.Where(p => p.Day == 25).Max(p => p.Average));
دلتنگ اسمان
یک شنبه 22 اردیبهشت 1398, 13:32 عصر
سلام
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;
}
محمد آشتیانی
یک شنبه 22 اردیبهشت 1398, 14:17 عصر
سلام مجدد
به خاطر اینه که یکی از لیست های داخلی شما ، هیچ آیتمی نداره ، به اینصورت اصلاح کنید
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());
}
* اصلاح برای اعداد منفی
دلتنگ اسمان
یک شنبه 22 اردیبهشت 1398, 14:34 عصر
جناب آشتیانی احسنت و ممنون
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.