小编KTF*_*KTF的帖子

VB.NET Switch语句GoTo案例

我在VB.NET中编写了一些使用switch语句的代码,但在其中一种情况下,它需要跳转到另一个块.在C#中,它看起来像这样:

switch (parameter)
{
    case "userID":
        // does something here.
    case "packageID":
        // does something here.
    case "mvrType":
        if (otherFactor)
        {
            // does something here.
        }
        else
        {
            goto default;
        }
    default:
        // does some processing...
        break;
}
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何将其转换为VB.NET.我试过这个:

Select Case parameter 
    Case "userID"
        ' does something here.
    Case "packageID"
        ' does something here.
    Case "mvrType" 
        If otherFactor Then 
            ' does something here. 
        Else 
            GoTo Case Else 
        End If 
    Case Else 
        ' does some processing... 
        Exit Select 
End Select     
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时,我得到一个编译错误:"标识符预期"."案例"下有一条波浪线.有任何想法吗? …

vb.net goto switch-statement

27
推荐指数
5
解决办法
19万
查看次数

LINQ在bigint上抛出无效的强制转换异常

我有一个看起来像这样的LINQ查询:

var clintLst = (from clntDt in ent.ClientDatas
                where clntDt.CompanyName.Substring(0,searchWord.Length).Equals(searchWord, StringComparison.CurrentCultureIgnoreCase)
                orderby clntDt.CompanyName
                select new { ClientDataID = clntDt.ClientDataID,
                    CompanyName = clntDt.CompanyName, 
                    ContactName = (clntDt.ContactFirstName + " " + clntDt.ContactLastName),
                    CompanyLocation = clntDt.Location.LocationCity.CityName + ", " + clntDt.Location.LocationState.StateCode
                } ).Distinct().Take(10);
Run Code Online (Sandbox Code Playgroud)

但是,它抛出以下异常:

从物化的"System.Int32"类型到"System.Int64"类型的指定强制转换无效.[..]异常详细信息:System.InvalidOperationException:从实现的"System.Int32"类型到"System.Int64"类型的指定强制转换无效.

源文件:C:\ TempPersonalCode\TransportTracking\TransportTracking\TransportTracking\Controllers\AJAXController.cs Line:35

(第35行是select子句)

我很困惑,因为如果改变:

select new { ClientDataID = clntDt.ClientDataID,
    CompanyName = clntDt.CompanyName, 
Run Code Online (Sandbox Code Playgroud)

select new { ClientDataID = (Int32)clntDt.ClientDataID,
    CompanyName = clntDt.CompanyName, 
Run Code Online (Sandbox Code Playgroud)

然后它工作正常.是不是一个匿名对象应该使用反射来确定它的类型?如果是这样,为什么它决定它是"Int32"而不是长?在EDMX中我把它作为Int64.

linq linq-to-entities

11
推荐指数
2
解决办法
1万
查看次数

如何使用"nodes"命令在SQL XML查询中使用命名空间?

我正在尝试从以下XML查询中查询字段(这实际上是一个Web服务调用):

<soap:Envelope xmlns:xsi="[schema]" xmlns:xsd="[shema]" xmlns:soap="[schema]">
  <soap:Body>
    <RunPackage xmlns="http://tempuri.org/">
      <xmlDoc>
        <Request>
          <SubscriberCode>543253</SubscriberCode>
          <CompanyCode>54325</CompanyCode>
          <BranchName>TestBranchName</BranchName>
          <TempWorksUserName>TempWorksUserName</TempWorksUserName>
[...]
Run Code Online (Sandbox Code Playgroud)

使用以下XML查询:

WITH XMLNAMESPACES('[schema]' AS soap2, DEFAULT '[schema]')

SELECT TransactionID, T2.Loc.query('data(Request/SubscriberCode)') as 'SubscriberCode'
FROM TempWorksRequest
CROSS APPLY RequestXML.nodes('soap2:Envelope/soap2:Body/RunPackage/xmlDoc') as T2(Loc)
Run Code Online (Sandbox Code Playgroud)

它运行但不会返回任何报复!

如果我构建相同的查询,但删除名称空间的东西,那么它的工作原理.例如,以下工作正常:

<xmlDoc> <Request> <SubscriberCode> 543253 </ SubscriberCode> <CompanyCode> 54325 </ CompanyCode> <BranchName> TestBranchName </ BranchName> [...]

SQL查询:

- 为MITS定义命名空间,以便我们可以使用MITS命名空间.WITH XMLNAMESPACES('[schema]'AS soap2,DEFAULT'[schema]')

SELECT TransactionID,T2.Loc.query('data(Request/SubscriberCode)')'SubscriberCode'FROM TempWorksRequest CROSS APPLY RequestXML.nodes('xmlDoc')as T2(Loc)

有任何想法吗?

xml sql xsd xml-namespaces

4
推荐指数
1
解决办法
7865
查看次数