私は1対多の関係を持つ2つのエンティティを持っていますが、それを多対多に切り替えるつもりですが、グループ化とカウントに役立つ必要があります。LINQグループ数が多いから多くの場合
検索文字列 - >多くのJobResults
A SearchStingは、ジョブの結果を見つけるために使用され、ジョブの結果は、検索文字列のコレクション・プロパティとして格納されます。
public class SearchString
{
public int SearchStringId { get; set; }
public string SearchStringName { get; set; }
public string query { get; set; }
public JobFunction JobFunction { get; set; }
public JobSeniority JobSeniority { get; set; }
public virtual ICollection<JobSearchResult> results { get; set; }
}
public class JobSearchResult
{
public int JobSearchResultId { get; set; }
public string jobtitle { get; set; }
public string company { get; set; }
public virtual SearchString SearchString { get; set; }
}
私はすべてのジョブ結果の上位5 JobFunctionsを取得します次のように:
var top5jobfunctions = JobSearchResults.Where(a => (a.SearchString != null)).
GroupBy(s => new { s.SearchString.JobFunction.JobFunctionId, s.SearchString.JobFunction.JobFunctionName }).
Select(g => new { value = g.Key.JobFunctionId, displayname = g.Key.JobFunctionName, count = g.Count() }).
OrderByDescending(x => x.count).
Take(5).ToList();
私は、次のような多くの多くにそれを切り替えるつもりです:
public class SearchString
{
public int SearchStringId { get; set; }
public string SearchStringName { get; set; }
public string query { get; set; }
public JobFunction JobFunction { get; set; }
public JobSeniority JobSeniority { get; set; }
public virtual ICollection<JobSearchResult> results { get; set; }
}
public class JobSearchResult
{
public int JobSearchResultId { get; set; }
public string jobtitle { get; set; }
public string company { get; set; }
public virtual ICollection<SearchString> SearchStrings { get; set; }
}
一度上位5つのジョブ機能を取得するにはどうすればよいですか?
また、適切なアプローチを選択した構造はありますか?たとえば、jobresultsを持つSearchStringの子コレクションが、おそらく最善の方法ではなかったのだろうか、おそらく私はSearchStringをJobResultのコレクションプロパティにするだけでよいのだろうかと思います。多くの多くの関係に変更されたモデルのために
何が起きているのかは、検索文字列を使用してジョブを見つけて、別の検索文字列を使用して同じジョブを見つけても、別の検索文字列の下に既に追加されているためです。目標は、複数の検索文字列の下でジョブが見つかったことを確認することです。代わりにJobSearchResultのSearchStringコレクションプロパティを持つほうがよいと思っています。あなたの答えはまさに私が探していたものです。それはSelectManyを理解するのにも役立ちました。ありがとうございました –