我的SQL服务器中有一个表格如下:
|Calendarweek| Hours|
|1 |4 |
|2 |5 |
...
我将此表格放入数据集并使用linq进行查询。现在的问题是,在我们的业务逻辑中,第一周是4月的第一周。我有一种方法可以找到给定年份的四月第一周。我现在需要做的是重新编写Calendarweeks。所以今年Calendarweek 14 = 1, Calendarweek 15 = 2
等等。
我浏览了所有Linq Extensions,但无法找到重新编码的方法。有没有人可以帮我这个?
首先,我可以将查询简化为:
dim query = from row in datatable1.AsEnumerable
答案 0 :(得分:1)
如果您已经知道第一周是14,那么为什么不能简单地在表中的Calendarweek
- 值中添加14?
Dim query = From row In datatable1.AsEnumerable
Let Calendarweek = row.Field(Of Int32)("Calendarweek")
Let Hours = row.Field(Of Int32)("Hours")
Select x = New With {
.Calendarweek = Calendarweek,
.Hours = Hours,
.RealWeek = Calendarweek + 14
}
用一种给出正确值的方法替换14(它不是那么清楚)。
答案 1 :(得分:0)
我会使用一个调用方法的匿名类型。
dim query = from row in datatable1.AsEnumerable
select new
{
Hours = row.Hours,
Calendarweek = MyConversionMethod(row.Calendarweek)
};
您需要将row.Hours
更改为数据表使用的任何内容,我认为命名列?也许row["Hours"]
。