2

ラムダ内で他の賢明なタイプのステートメントを実行できるかどうか疑問に思っていました。これは次のようなものです。

概要(表1)と説明(表2)と呼ばれる1つの列を除いて、まったく同じように見える2つのテーブル構造があります。私のコンポーネントは、プロパティに基づいて2つのテーブルのいずれかを読み取り、列が存在するかどうかを判断するために単一のラムダ式を実行したいと考えています。

(from p in table[this.TableName]
 where (p["Description"] != null)
 'otherwise' where (p["Synopsis"] != null)
 select p).First();

ヘルプに感謝します。

4

3 に答える 3

2

存在しない列にアクセスしても例外がスローされなければ、論理 OR 演算子 ( ||)を使用できるはずです。

(from p in table[this.TableName]
 where (p["Description"] != null || p["Synopsis"] != null)
 select p).First();
于 2012-07-25T10:56:03.480 に答える
0

いいえ、LINQ クエリ理解構文を拡張して新しいキーワードを追加することはできません。できることは、さらに拡張メソッドを追加し、独自のロジックをそのように記述することです。ただし、この場合は実際には役に立たないでしょ.Where(...).Otherwise(...)う。「それ以外の場合」のデータは実際には取得されないためです。シーケンスはすでにWhere(...)。_

また、それが LINQ-to-Objects でない限り、おそらくクエリ インタープリターがチョークすることを期待する必要があります。より簡単な答えは、「いいえ、実際にはできません」です。

他の人が指摘したように、 を介して条件を単純化でき||ます。

于 2012-07-25T10:57:51.913 に答える
0

インデクサーnullが存在しない列を返すと仮定すると、論理 OR ("||") が解決策のように思えます。

于 2012-07-25T10:58:03.753 に答える