c# - 如何将日期列表与实体中的数据库表连接起来?
问题描述
我有一年中每周开始日期的列表。
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 将两者结合在一起?
解决方案
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
,所以上面的代码返回了一个匿名类型的列表
推荐阅读
- android - 可组合调用只能在可组合函数的上下文中发生
- python - Python代码在没有打印功能的情况下无法工作
- python - Locust - Python - ssl.SSLError: [SSL] PEM lib (_ssl.c:4065)
- hadoop - 我不想在 hadoop 主节点中存储任何数据。那可能吗?
- maven - 自定义 gradle 插件版本解析不正确
- python - 检查输入数据集是否包含 PySpark 中的键
- flutter - 在单折线图中实现虚线和纯线
- https - org.mule.construct.Flow:无法停止服务:mule 3 中的 https-testFlow
- mysql - 上传图片到mysql的路径以及上传图片的用户名
- node.js - AWS GetSignedUrl 默认使用 us-east-1 区域生成错误的 url