私は、LINQで、次の選択クエリがあります。例えば、私は戻って5つのレコードを取得する可能性がありますのでは、LINQのは、リストにグループ化
var something =
from te in taskEvidences
join e in evidences on te.EvidenceId equals e.Id
join tr in taskRequirements on te.TaskListId equals tr.TaskListId
join r in newSelectableModule.Requirements on tr.RequirementListId equals r.Requirement.Id
select new
{
Evidence = e,
RequirementIndices = r.Index
};
は現在、それは、いくつかのインデックス(int型)の値と一緒に証拠オブジェクトを選択し、すべてとは同じEvidenceオブジェクトと5つの異なるインデックス。
私がしたいことは、EvidenceオブジェクトとインデックスのList<int>
という単一のレコードを返すだけです。私はグルーピングを使用しようとしましたが、そのタイプについてエラーが発生し続けると、その使用法から推測できません。
group new {e, r} by new {e}
into g
select new
{
Evidence = g.Key,
RequirementIndices = g.SelectMany(x => x.r.Index)
};
エラーがRequirementIndicesプロパティに割り当てられているSelectMany
の周りに発生します。これは、1つのような試みです。私はオンラインで見つけたいくつかの示唆を試しましたが、どれも助けてくれませんでした。私はそれが私の部分で小さなエラーだと思うが、私は今、コードブラインドに行くよ!
更新:
正確なエラー:
The type arguments for method 'Enumerable.SelectMany(IEnumerable, Func>)' cannot be inferred from the usage. Try specifying the type arguments explicitly.
正確なエラーは何ですか? [mcve]はあなたを助けるのがずっと簡単です。 –
'SelectMany'はリストのリストを平坦化することです。テーブルを結合してもリストはリストに入れられません。もしそれを 'Select'に変更すればどうなりますか?ところで、「r」はグループ分けの一部であるようです。 –
@JonSkeet質問を正確なエラーで更新しました。 – XN16