4

並べ替えようとする動的リストがあり、新しい並べ替え順序に基づいて ID を変更します。

foreach (Case c in cases)
{
    bool edit = true;

    if (c.IsLocked.HasValue)
        edit = !c.IsLocked.Value;

    eventList.Add(new {
        id = row.ToString(),
        realid = "c" + c.CaseID.ToString(),
        title = c.CaseTitle + "-" + c.Customer.CustomerDescription,
        start = ResolveStartDate(StartDate(c.Schedule.DateFrom.Value.AddSeconds(row))),
        end = ResolveEndDate(StartDate(c.Schedule.DateFrom.Value), c.Schedule.Hours.Value),
        description = c.CaseDescription,
        allDay = false,
        resource = c.Schedule.EmployeID.ToString(),
        editable = edit,
        color = ColorConversion.HexConverter(System.Drawing.Color.FromArgb(c.Color.Value))
    });

    row++;

}

var sortedList = eventList.OrderBy(p => p.title);

for (int i = 0; i < sortedList.Count(); ++i)
{
    sortedList.ElementAt(i).id = i.ToString();
}

sortedList.ElementAt(i).id = i.ToString();しかし、それは読み取り専用であると述べてクラッシュし ますか?

プロパティまたはインデクサー<>f__AnonymousType4<string, string,string,string,string,string,bool,string,bool,string>.idを割り当てることはできません -- 読み取り専用です

ID を変更するにはどうすればよいですか?

ありがとう

4

1 に答える 1

5

前述のように、匿名型を更新することはできませんが、プロセスを変更して、最初にアイテムを注文し、アイテムのインデックスを へのパラメーターとして含める 1 つのクエリを使用することができますSelect

var query = cases.OrderBy(c => c.CaseTitle + "-" + c.Customer.CustomerDescription)
                 .Select( (c, i) =>
                    new {
                            id = i.ToString(),
                            realid = "c" + c.CaseID.ToString(),
                            title = c.CaseTitle + "-" + c.Customer.CustomerDescription,
                            start = ResolveStartDate(StartDate(c.Schedule.DateFrom.Value.AddSeconds(i))),
                            end = ResolveEndDate(StartDate(c.Schedule.DateFrom.Value), c.Schedule.Hours.Value),
                            description = c.CaseDescription,
                            allDay = false,
                            resource = c.Schedule.EmployeID.ToString(),
                            editable = c.IsLocked.HasValue ? !c.IsLocked.Value : true ,
                            color = ColorConversion.HexConverter(System.Drawing.Color.FromArgb(c.Color.Value))
                        }
                   );
于 2013-03-12T14:00:24.303 に答える