2

VB.NET と LINQ の使用; 「クリック数」を更新する必要がある XML ファイルに書き込んでいます。誰かがリンクをクリックするたびに要素 appClick を 1 ずつインクリメントする関数を作成しようとしています。

<applications>
  <app id="1">
    <appName>Service Desk</appName>
    <appLink>https://websiteurlhere.com</appLink>
    <appFav>1</appFav>
    <appClick>0</appClick>
  </app>
</applications>

したがって、アプリケーションを呼び出すサブルーチンがあり、完全に機能しています。しかし、appClick 要素をインクリメントする機能がありません。

Public Sub appCall(ByVal x As String) ' x = application name
    Dim appQuery = _
        From c In doc.<applications>.<app> _
        Where c.<appName>.Value = x _
        Select c.<appLink>

    For Each result In appQuery
        System.Diagnostics.Process.Start(result.Value)
    Next
End Sub

コードを改善できる場合は、それに関する提案も受け付けています。

4

1 に答える 1

1

の代わりにSelect c.<appLink>、 を実行しSelect c.<appClick>, c.<appLink>ます。

次に、次のことができます。

For Each result In appQuery
    result.appClick.Value += 1
    System.Diagnostics.Process.Start(result.appLink.Value)
Next

その後、ドキュメントを保存することを忘れないでください。

doc.Save("fileName")

テストに使用したサンプルを次に示します。

Public Sub appCall(ByVal x As String) ' x = application name
  Dim doc = <applications>
              <app id="1">
                <appName>Service Desk</appName>
                <appLink>https://websiteurlhere.com</appLink>
                <appFav>1</appFav>
                <appClick>0</appClick>
              </app>
            </applications>

  Dim appQuery = _
      From c In doc.<app> _
      Where c.<appName>.Value = x _
      Select c.<appClick>, c.<appLink>

  For Each result In appQuery
    result.appClick.Value += 1
    Debug.WriteLine(result.appLink.Value)
  Next
End Sub
于 2013-07-05T19:11:15.820 に答える