問題タブ [linq-method-syntax]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
86 参照

entity-framework - メソッド構文を使用したLINQジェネリックGroupByおよびSelectBy

私はそれを一般的にしようとしていますが、成功しませんでした。関連する User エンティティを取得しません。

私はそれを試しました:

使用時にエラーが発生します:

0 投票する
2 に答える
239 参照

c# - .NET Linq ステートメントの問題

Linq と Query の構文は、私の最も苦手なスキルの 1 つです。望ましい結果を得るのに問題があります。

2 つのテーブル/コレクションがあります。1 つは DocumentTypes で満たされ、もう 1 つは Notifications で満たされます。これらは問題を保持するフィールドです。そうでないものは省略しました。

ドキュメントの種類

  • ID
  • 名前
  • サプライヤーID

通知

  • ID
  • DocumentTypeID
  • ユーザーID
  • 製品番号
  • Last_Sequence

3 つのパラメーターがあります。ユーザー ID、サプライヤー ID、および製品 ID。

そのサプライヤに関連付けられているすべての DocumentTypes のリストを取得するには、supplierID が必要です。次に、それらに関連付けられた通知のリストを取得するために、userID と ProductID が必要です。

次に、これら 2 つのリストに参加する必要があります。すべての通知には、リンク先の documentTypeID があります。特定のドキュメント タイプの通知がある場合、Last_Sequence フィールドを含め、true に設定された新しい bool フィールドを作成する必要があります。

通知がない場合は、Last_sequence を空のままにし、bool を作成して false に設定できます。

したがって、結果はこれらの型を持つオブジェクトのリストになります。

  • DocumentTypeID
  • DocumentTypeName
  • BoolField (これに関連付けられた通知がある場合は true)
  • NotificationID (存在する場合のみ)
  • Last_sequence (存在する場合のみ)

私がこれまでに持っているもの。

以前のバージョンでは、bool フィールドと documentType 情報を追加するだけで済みました。そのために私はこの声明を出しましたが、必要なものをそれに追加することはできないようです:

私が新しいもののために試したことはこれですが、通知が関連付けられている場合にのみデータが返されます。存在しない場合、その documentType データは返されません。

編集:これは私が試したものの例ですが、うまくいきません。ここでの問題は、n.last_sequence を実行しようとすると n が存在しないことです。

これをどのように解決すればよいのか考えました。最初にすべての適切な DocumentTypes のコレクションを作成し、それを作成した新しいコレクションと結合する必要がありますか?それとも、これを解決するためのより良い方法はありますか?

0 投票する
2 に答える
83 参照

c# - List 型の 2 つのリストに必要なメソッド構文を使用した Linq クエリ

fullMessagesList から「This is a Lemon」、「This is a Orange」を返すメソッド構文を使用した linq クエリが必要です。別のリストの各テキストについて、contains() を確認する必要があります。

古い学校の foreach ループを使用して記述しましたが、メソッド構文を使用して linq で理解する必要があります。

0 投票する
3 に答える
2042 参照

c# - INNER および OUTER Join を使用した LINQ メソッドの構文

私は3つのクラスを持っていてLINQ methods、実行するために使用しようINNER JOINとしていLEFT JOINます. それぞれを個別に実行できますが、構文さえ理解できないため、一緒に実行することはできません。

最終的に、私が書く SQL は次のようになります。

クラス

サンプル

結果を型にしたいGroupLEFT JOINと の間Sectionを正常に実行しましたCourseが、タイプIQueryable<a> , which is not what I want, sinceGroup` のオブジェクトがあります。

私もこれを試しましたが、これはすべてのテーブルでNULL実行され、ユーザーが何も入力していないため返されます。INNER JOINCourses

質問

データベースへの呼び出し回数を最小限に抑えてINNERとを実行し、タイプ の結果を取得するにはどうすればよいですか?LEFT JOINGroup

望ましい結果

タイプ のオブジェクトを 1 つ持ちたいのですが、 a に aがあるGroup限りのみです。また、ユーザーが特定のまたは returnに対して持っているものを返したいです。GroupSectionCoursesSectionNULL

0 投票する
0 に答える
179 参照

c# - 'Where' メソッド内で三項演算子の条件が無視されています。クエリに対する別のより良いアプローチはありますか?

EF および Linq メソッド構文を使用してデータベースからデータを取得するメソッドを実装しようとしています。このメソッドには 5 つのパラメーター (4 つのリストと 1 つの文字列) があり、各パラメーターはクエリ結果のフィルターとして機能する必要があります。

「Where」メソッド内での三項演算子の使用は、次のコードの一部の式 (1 ~ 4) で機能しますが、式 (5) では、「nameFilter」の文字列値に関係なく、三項演算子を使用して Where 条件が完全に無視されます。式(5)の式(5)は無視されますが!nameFilter.Equals("")、nameFilterの値が""の場合に条件結果が真になることをデバッグ時に確認しました。

最後に、問題を解決しようとして、表現を変更しました.Where( u => !nameFilter.Equals("") ? u.NAME.ToUpper().Contains( nameFilter.ToUpper() ) : true );

.Where( u => nameFilter.Length > 0 ? u.NAME.ToUpper().Contains( nameFilter.ToUpper() ) : true )

そしてそれはうまくいきました。

私は C# と Entity Framework を初めて使用するので、文字列と比較すると、「長さ」と比較して三項演算子が何らかの形で無視され、期待される結果が得られた理由を理解したいと思います。Entity Framework でこのクエリを実行する別の方法はありますか?

前もって感謝します。