C# Linq中的Sql年(),月()

C# Linq中的Sql年(),月(),c#,.net,linq,C#,.net,Linq,我已经找了几天来解决linq上的sql查询。 这是我的sql查询([Date]具有格式datatime2): 选择[日期],测试值 来自[SalesValue].[dbo].[TestTable] 其中CONCAT(DATEPART(yyyy,[Date])、DATEPART(MM,[Date]))='201801' 我的问题是这样的,我无法继续。我不知道如何从b_TestTable获得一年和一个月。日期: string dat=DateTime.ParseExact(dats,“yyyy-M

我已经找了几天来解决linq上的sql查询。 这是我的sql查询([Date]具有格式datatime2):

选择[日期],测试值
来自[SalesValue].[dbo].[TestTable]
其中CONCAT(DATEPART(yyyy,[Date])、DATEPART(MM,[Date]))='201801'
我的问题是这样的,我无法继续。我不知道如何从b_TestTable获得一年和一个月。日期:

string dat=DateTime.ParseExact(dats,“yyyy-MM-dd”,CultureInfo.CurrentCulture).ToString(“yyyyymm”);
var testQuery=(
来自repos.GetTable()中的b_测试表
其中b_TestTable.Date==dat
选择b_TestTable.TestingValues)
.ToArray();
有人能帮我看看linq中的查询是什么样子的吗?? 谢谢您的帮助。

您可以使用

var dat = DateTime.ParseExact(dats, "yyyy-MM-dd", CultureInfo.CurrentCulture);

var testQuery = (
        from b_TestTable in repos.GetTable<TestTable>() 
        where b_TestTable.Date.Year == dats.Year 
            && b_TestTable.Date.Month == dats.Month 
        select b_TestTable.TestingValues)
    .ToArray();
var dat=DateTime.ParseExact(dats,“yyyy-MM-dd”,CultureInfo.CurrentCulture);
var testQuery=(
来自repos.GetTable()中的b_测试表
其中b_TestTable.Date.Year==dats.Year
&&b_TestTable.Date.Month==dats.Month
选择b_TestTable.TestingValues)
.ToArray();

除非我在这里遗漏了一些明显的内容,否则您只需要查看年份和月份-因此:

var dat = DateTime.ParseExact(dats, "yyyy-MM-dd", CultureInfo.CurrentCulture);
var testQuery = (
    from b_TestTable in repos.GetTable<TestTable>() 
    where b_TestTable.Date.Year == dat.Year && b_TestTable.Date.Month == dat.Month
    select b_TestTable.TestingValues)
.ToArray();
var dat=DateTime.ParseExact(dats,“yyyy-MM-dd”,CultureInfo.CurrentCulture);
var testQuery=(
来自repos.GetTable()中的b_测试表
其中b_TestTable.Date.Year==dat.Year&&b_TestTable.Date.Month==dat.Month
选择b_TestTable.TestingValues)
.ToArray();

b_TestTable.Date类型为Date,则无需将DAT转换为字符串

var testQuery = (
        from b_TestTable in repos.GetTable<TestTable>() 
        where b_TestTable.Date.ToString("yyyyMM") == dats//If  is in format yyyyMM
        select b_TestTable.TestingValues)
    .ToArray();
var testQuery=(
来自repos.GetTable()中的b_测试表
其中,b_TestTable.Date.ToString(“yyyyMM”)==dats//If的格式为yyyyMM
选择b_TestTable.TestingValues)
.ToArray();
如果要比较日期,则可以直接比较月份和年份

var testQuery = (
            from b_TestTable in repos.GetTable<TestTable>() 
            where b_TestTable.Date.Month == dat.Month && b_TestTable.Date.Year = dat.Month
            select b_TestTable.TestingValues)
        .ToArray();
var testQuery=(
来自repos.GetTable()中的b_测试表
其中b_TestTable.Date.Month==dat.Month&&b_TestTable.Date.Year=dat.Month
选择b_TestTable.TestingValues)
.ToArray();
使用扩展方法实现:

repos.GetTable<TestTable>()
.Where(b_TestTable=> b_TestTable.Date.Month == dat.Month && b_TestTable.Date.Year = dat.Month)
.Select(result=> result.TestingValues).ToArray();
repos.GetTable()
其中(b_TestTable=>b_TestTable.Date.Month==dat.Month&&b_TestTable.Date.Year=dat.Month)
.Select(result=>result.TestingValues).ToArray();

您是要与日期的年/月部分进行比较,还是要将其格式化为yyyymo格式?如果您想格式化它,请查看以下内容:,如果没有,请尝试b_TestTable.Date.Year&b_TestTable.Date.Month
dats
这里是一个字符串(犯了相同的错误)谢谢,修复:-)