【问题标题】:Linq InvalidCastException in VB.NET but works in C#VB.NET 中的 Linq InvalidCastException 但在 C# 中有效
【发布时间】:2023-04-10 17:02:01
【问题描述】:

我不是 VB.NET 人,但我现在必须这样做。我正在尝试调用服务并使用下面的 VB.NET 代码取回数据。

但我收到一个异常,提示 InvalidCastException 指定的转换无效。

Dim service = Ioc.Resolve(Of Services.DokumentServiceClient)()
Dim response = service.Dokument(Id, GroupId, False)
Dim DocumentId = ASPxListBoxDokument.SelectedItem.Value

Dim result = (From documents In response.Values
              From d In documents 
              Where d.DocumentId = DocumentId
              Select d).FirstOrDefault

所以我在 c# 中尝试了相同的方法,它可以工作。 这是在 C# 代码中

var response = client.Dokument(Id, GroupId, false);

Guid DocumentId =  ASPxListBoxDokument.SelectedItem.Value
var result  = (from documents in response.Values
               from d in documents 
               where d.DocumentId == DocumentId 
               select d).FirstOrDefault();

我应该怎么做才能让它在 VB.NET 中工作?

【问题讨论】:

  • 虽然这不是相同的代码。 C#代码中client的类型在哪里?
  • 在哪里你得到了那个例外?堆栈跟踪准确地告诉您它发生在哪一行。
  • Ioc.Resolve 行(即不在您的 c# 中的行)在您的 VB 代码中引发异常吗?
  • 不要介意 Ioc 它是使用 svcutil 生成的。在 .FirstOrDefault* 处引发异常
  • 为什么VB代码使用service.Dokument,而C#代码使用client.Dokument

标签: c# .net vb.net linq entity-framework


【解决方案1】:

我的 VB 中的问题是我没有将其转换为 Guid

Dim DocumentId = ASPxListBoxDokument.SelectedItem.Value

但在我的 c# 代码中,我将其声明为 Guid

Guid DocumentId =  ASPxListBoxDokument.SelectedItem.Value

业余错误。

【讨论】:

    猜你喜欢
    • 2011-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    相关资源
    最近更新 更多