【问题标题】:VB.net & LINQ - identifying date typesVB.net & LINQ - 识别日期类型
【发布时间】:2018-06-12 19:04:54
【问题描述】:

我对 LINQ 还很陌生,所以还是有点过头了。

通过几行 VB,我将数据表从 MS Access 数据库复制到 SQL Server 数据库。我使用LINQ来识别传输数据的哪些部分是字符串和数字等,所以它会知道是否放单引号。

现在我遇到了一个问题,因为其中一些字段是日期类型字段,我似乎无法让 LINQ 将它们识别为日期。这是简化的查询字符串:

 Dim Itemarray = row.ItemArray.Select(Function(i) If(TypeOf i Is Date, "#" + i + "#", i.ToString))

并且 VS 正在标记该行,除其他外,

"类型参数的数据类型不能从这些推断 论据。明确指定数据类型可能会更正此问题 错误。”

我也尝试过使用DateAndTime 类型,它显示了同样的内容。但我没有看到任何其他可行的数据类型。

我错过了什么?

谢谢!

【问题讨论】:

    标签: sql-server vb.net linq ms-access


    【解决方案1】:

    TypeOf 用于对象。请改用VarType

    Dim Itemarray = row.ItemArray.Select(Function(i) If(VarType(i) = VariantType.Date, "#" + i + "#", i.ToString))
    

    请注意,我不熟悉 VB.Net,一般只熟悉 VBA 和 VB,所以我可能遗漏了一些明显的东西。

    【讨论】:

    • 谢谢你。我很失望地说它没有用。这很有意义,但只是不承认这是约会。奇怪的是,虽然程序在此过程的中间停止,但在即时控制台中,我输入了“?VarType(i)”,它仍然将其指示为日期。但代码就是无法识别它。
    • Correction.... 当我把一些东西改过来时,它起作用了。编辑:我应该解释整行包含多个 .select 函数,我猜它们需要按特定顺序排列。我还没有完全解决它,但我认为这给了我一个关于完成它的线索。
    • Erik,我最终采用了不同的方法,但仍然使用 VarType 来确定如何格式化结果字符串。因此,即使我无法让它与 LINQ 语句一起使用,您的回答也帮助我理解了 VarType 函数,因此我在 Select Case 结构中使用了它。我发现我需要它用于日期类型以外的其他变体。谢谢! (我接受了你的回答,因为它无疑是正确的,即使我无法让它为我的目的正常工作。)
    猜你喜欢
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 2013-01-27
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多