ホーム>source

助けが必要です。
問題:私は User を持っていますと MedalTransaction クラス。 ユーザーはメダルを割り当てて、メダルを受け取ることもできます。ウィズウィズ MedalTransaction という2つのプロパティがありますそして Origin それはユーザーIDです。


私が試したこと:

<前>ウィズウィズ

これは機能します獲得したメダルのみ。 他のプロパティ Destination を設定したかったユーザーインスタンスの作成時。 複数の var q = (from user in companyUsers join mt in Context.MedalTransactions on user.Id equals mt.Destination into medalTransactions from mt in medalTransactions.DefaultIfEmpty() group new { user, mt } by new { mt.Destination } into receivedMedals select new User { Id = receivedMedals.Select(u => u.user.Id).FirstOrDefault(), Name = receivedMedals.Select(u => u.user.Name).FirstOrDefault(), Company = receivedMedals.Select(u => u.user.Company).FirstOrDefault(), TotalAcquiredMedals = receivedMedals .Where(m => m.mt.Destination == m.user.Id && m.mt.Origin != systemId) .Sum(m => m.mt.Quantity) }) .OrderByDescending(u => u.TotalAcquiredMedals); を試しましたしかし、望んだ結果が得られなかったので、これが可能かどうかさえわかりません。

ご協力ありがとうございました


編集 質問は解決し、最終コード:

<前>ウィズウィズ TotalAssignedMedals
あなたの答え
  • 解決した方法 # 1

    多分そのようなもの

    <前>ウィズウィズ from user in companyUsers join mt in Context.MedalTransactions on user.Id equals mt.Destination into destinations join mt2 in Context.MedalTransactions on user.Id equals mt2.Origin into origins from mtd in mt.DefaultIfEmpty() from mto in mt2.DefaultIfEmpty() group new { user, mtd, mto } by new { user.Id } into medals select new {user.Id, user.Name, ..., TotalAcquiredMedals = mtd.Where(_ => _ != null).Distinct().Count(), TotalAssignedMedals = mto.Where(_ => _ != null).Distinct().Count() }

関連記事

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ php - 添付されたswiftmailerおよび電子メールフォーム:初心者