我在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)
但是,当我这样做时,我得到一个编译错误:"标识符预期"."案例"下有一条波浪线.有任何想法吗? …
我有一个看起来像这样的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.
我正在尝试从以下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)
有任何想法吗?