C# LINQ比较两个列表,每个列表在一个对象内,至少一个相等
我有一个目标学生C# LINQ比较两个列表,每个列表在一个对象内,至少一个相等,c#,database,linq,C#,Database,Linq,我有一个目标学生 public class Student { public int id; public string name; public ICollection<WeekDays> weekDays; } 上课时间是这样的: public class WeekDays { public Days day; } public enum Days { Monday, Tuesday, Wednesday, T
public class Student
{
public int id;
public string name;
public ICollection<WeekDays> weekDays;
}
上课时间是这样的:
public class WeekDays
{
public Days day;
}
public enum Days
{
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
Sunday
}
var student1; //this is a student that have the specific values (id, names and all the weekDays, all initialized with values)
var student2 = database.Students
.Include(x => x.weekDays)
.Where(x =>
x.weekDays.Any(day1 => student1.weekDays.Any(day2 => day2.WorkDay == day1.WorkDay))
)
.FirstOrDefaultAsync();
我想让学生与某个特定的学生至少有一个共同的一天
我是这样做的:
public class WeekDays
{
public Days day;
}
public enum Days
{
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
Sunday
}
var student1; //this is a student that have the specific values (id, names and all the weekDays, all initialized with values)
var student2 = database.Students
.Include(x => x.weekDays)
.Where(x =>
x.weekDays.Any(day1 => student1.weekDays.Any(day2 => day2.WorkDay == day1.WorkDay))
)
.FirstOrDefaultAsync();
但它不起作用,这是错误:
“(我的LINQ表情在这里)”无法翻译。以可以翻译的形式重写查询,或者通过插入对AsEnumerable()、AsAsAsAsyncEnumerable()、ToList()或ToListSync()的调用显式切换到客户端计算
请尝试预先选择日期并使用
包含的内容
:
var student1Days = student1.weekDays.Select(d => d.day).ToList();
var student2 = database.Students
.Include(x => x.weekDays)
.Where(x => x.weekDays.Any(day1 => student1Days.Contains(day1.WorkDay)))
.FirstOrDefaultAsync();
@杰克·查韦斯很高兴这有帮助!