私は会社の登録者のデータベースを持っています(検索/ディレクトリ機能用)。この機能を利用する登録者(広告/追加画像/ロゴなど)に「強化された」情報を保持するための新しいテーブルを追加しました。現在、新しいテーブルには、登録者の一意の識別子と、いくつかの追加フィールド(画像へのパスなど)が格納されています。ユーザーは特定の条件でユーザーを検索することができ、拡張リストはリストの一番上に表示されます。検索結果に登録者が2回表示されないようにする必要があります(ユーザーが拡張されたリスティングを持っている場合は、上位の「拡張リスト」領域にのみ表示する必要があります)。どうすればこれを達成できますか?LINQを使用したSQL結果の結合
0
A
答えて
1
古いテーブルから新しいテーブルへの左外部結合。 「ケース「による順序」クエリのに
前に付加new_table.idは、その後、他の1 0終了nullである」
あなたはこの持っていたのであれば:
:select foo, bar from old_table
order by bar, foo;
をあなたはこれを持っていると思います
select a.foo, a.bar from old_table a
left join new table b on (a.customer_id = b.customer_id)
order by
case when new_table.customer_id is null then 1 else 0 end,
bar, foo;
編集:コードの外部結合から「左」を除外しました。
1
LINQtoSQLとデザイナー生成エンティティを使用している場合は、適切な外部キーの関係を設定していると仮定して、登録者エンティティに関するエンティティの関連情報が必要です。後でこれを追加した場合は、これを手作業で追加するか(ここを参照)、デザイナーにエンティティを削除/再追加して新しい関係を拾う必要があります。次に、あなたのクエリのようなものになるだろう。おそらく数える
var registrants = db.Registrants.Where(... selection criteria here ...);
registrants = registrants.OrderByDescending(r => r.EnhancedData.Count())
.ThenBy(r => r.Name); // or normal sort order
ので、これはあなたの結果の上部に強化されたデータを持つものを置く必要があります0または1のどちらかになります。
関連する問題
- 1. 空のLINQクエリを使用した結果の結合
- 2. グループ句を使用したLINQ to SQL結果へのアクセス
- 3. LINQ to SQL:ストアドプロシージャの結果
- 4. LINQ to SQL結果のインターセプト
- 5. LINQを使用した左結合
- 6. VB.net LINQはすべての結果で結合しました
- 7. LINQ、サブクエリ結果の集合
- 8. Linqを使用して動的クエリ結果をEntitySetに結合しますか?
- 9. mysqliを使用した左結合の結果のバインド
- 10. 結合と結合句を使用したSQLクエリ
- 11. Linqを使用したリストでの左結合の使用c#
- 12. Sql Serverストアドプロシージャの結果セットの結合
- 13. デフォルトフォールバックを使用したSQL結合
- 14. 結合を使用したSQL ORACLE UPDATE
- 15. セレクタを使用してネストされた結果を結合
- 16. SQL Server:クエリ結果の結合
- 17. 結果2つの結合SQLサーバー
- 18. SQLからLinqへSQL結合ステートメントで 'AND'で左結合
- 19. 左の結合を使用した複数の結果の連結
- 20. SQL LINQ結果をdatagridview vb.netにバインド
- 21. Linqの左結合と他の結合の変数の使用
- 22. 特定の結果のSQL使用数または合計
- 23. 結合を使用し、結合の結果を配列に入れますか?
- 24. C#でlinqを使用した結果セットをグループ化する
- 25. DataRowのLINQ結果
- 26. LINQ to SQL結合と合計
- 27. LINQ倍でのIQueryableを結合結果セレクタ式
- 28. LINQの結合結果を効率的にフラット化
- 29. VB.NETでのLINQグループ結合の使用
- 30. 左外部結合を使用したOracle SQLクエリをLinqに変換する
私はちょうど左外部結合を使用しました(これを行うと言いましたが、小さなコードスニペットではありませんでした)。 –