我列出了一年中每周的开始日期。
List<DateTime> yearWeeks = GetAllDaysOfWeekForYear(DateTime.Now.Year, DayOfWeek.Monday);
我想在我的数据库表中列出这些:
db.planner.Where(a => a.EmployeeId == CustomerId && a.Year == DateTime.Now.Year).Join(yearWeeks, c => c.WeekStarting, d => d.ToLongDateString(), (c, d) => new
{
yearDate = d.ToLongDateString(),
c.WeekStarting
}).ToList();
这会引发错误
无法从中推断出方法Queryable.Join的类型参数 用法。
我如何与linq一起加入这两个?
答案 0 :(得分:0)
Join
需要4个参数(第一个重载版本):
第一个是连接到(yearweeks
)的序列,第二个是第一个序列(WeekStarting
)的键,第三个参数是第二个序列的键,第四个参数是lambda选择匹配元素:
从两个匹配元素创建结果元素的函数。
DatesDeclared.planner = db.planners.Where(a => a.EmployeeId == 2 && a.Year == DateTime.Now.Year).Join(yearweeks, c => c.WeekStarting, d => d.Value, (c, d) => new
{
c.WeekStarting,
d.Value
}).ToList();
使用查询语法比lambda语法更易读,更简单:
var data = from p in planners
join w in yearweeks on p.WeekStarting equals w.Value
select new
{
p.WeekStarting,
w.Value
};
在不知道您要返回的类型的情况下,我无法知道DatesDeclared.planner
的类型,因此上面的代码返回匿名类型列表