1

XML に対する LINQ クエリがあります。これにより、ネストされたリストのリストが得られます。各サブリストは、要素 (「行」) 属性のリストです。

var items = loadbodies.Descendants("row").Select(a => a.Attributes().Select(b => b.Value).ToList()).ToList();

これは意図したとおりに機能しますが、実際に必要なのは、要素の属性の 1 つ ("messageID") が 2 番目のリストにあるサブリストが追加されないように、別の値のリストに対してこれをクエリすることです。1 つの値に対してこれを実行できますが、2 番目のリスト全体に対してチェックする必要があります。

2 番目のリストから 1 つのハードコードされた値によって 1 つのサブリストを除外するクエリを以下に示します。

var items = loadbodies.Descendants("row").Where(c => (string)c.Attribute("messageID") != "avaluefromthesecondlist").Select(a => a.Attributes().Select(b => b.Value).ToList()).ToList();

どんな助けでも大歓迎です。

4

1 に答える 1

1

を使用するだけContainsです。行を分割すると読みやすくなることに注意してください。

var ids = ...; // Some sequence of ids, e.g. a List<string> or HashSet<string>
var items = loadbodies
      .Descendants("row")
      .Where(row => ids.Contains((string) row.Attribute("messageId")))
      .Select(a => a.Attributes()
                    .Select(b => b.Value)
                    .ToList())
      .ToList();

呼び出しも使用できることに注意してくださいJoin...ただし、ID が比較的少ない限り、これで問題ありません。

于 2013-04-05T15:36:15.043 に答える