次のクラスがあり、クエリした一連のデータのリストを作成しようとしています:
public class Agency
{
public string AgencyName { get; set; }
public int AgencyID { get; set; }
public IEnumerable<AuditRule> rules { get; set; }
}
「AuditRule」は次のとおりです。
public class AuditRule
{
public int AuditRuleID { get; set; }
public string AuditRuleName { get; set }
public int AvgDaysWorked { get; set; }
}
現在、かなり複雑なクエリの後、次のような匿名オブジェクトにデータを取得できました。
{ DateImported, AgencyID, AgencyName, AuditRuleName, AuditRuleID, DaysWorked }
私はその形式のレコードを何千も持っており、IEnumerable <Agency
> を作成しようとしています。これには、各機関のルールのリストが含まれます。
したがって、例として次のデータを取り上げます。
{ AgencyID = 1, AgencyName = "CCR", AuditRuleName = "Call", AuditRuleID = 1, DaysWorked = 3 }
{ AgencyID = 1, AgencyName = "CCR", AuditRuleName = "Call", AuditRuleID = 1, DaysWorked = 5 }
{ AgencyID = 1, AgencyName = "CCR", AuditRuleName = "Time", AuditRuleID = 2, DaysWorked = 2 }
{ AgencyID = 2, AgencyName = "YRX", AuditRuleName = "Call", AuditRuleID = 1, DaysWorked = 3 }
{ AgencyID = 2, AgencyName = "YRX", AuditRuleName = "Acct", AuditRuleID = 3, DaysWorked = 2 }
したがって、このデータから、最初にエージェンシーのリスト (一番上のクラス) を作成しようとしています。この例では、明らかに「CCR」と「YRX」です。次に、機関ごとに<AuditRule
、レコードがある IEnumerable > 内の各ルールのエントリが必要です。
したがって、エージェンシー「CCR」には、「Call」と「Time」という 2 つのルール エントリがあります。「Call」AuditRule エントリの AvgDaysWorked は 4 になります。これは、エージェンシー「CCR」の下にある「Call」のエントリを平均して 3 日と 5 日稼働しているためです。エントリが 1 つしかないため、Time AuditRule エントリの AvgDaysWorked は 2 になります。
LINQ忍者のスキルを持っている人が、このデータを各機関の機関とルールのリストにまとめるのを手伝ってくれませんか(そのルール/機関の組み合わせで働いた平均日数)?
その匿名オブジェクトをまとめることさえできるほど複雑で、このクエリを作成してこのエージェンシー/監査ルールのリストを作成するのに本当に苦労しています。
これは、SelectMany() などを使用するケースですか? 私はここでちょっと迷っています。