使用Linq重新编码数据列

时间:2014-08-26 14:52:33

标签: c# vb.net linq

我的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

2 个答案:

答案 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"]