0

fetchXMLクエリから入力されたリストがありますが、残念ながら、重複するタイトルを持つ多くのイベントが返されます。したがって、解決策として、リスト内の各アイテムをループして、タイトルが前のアイテムと同じである場合は、item.YearId&item.Yearの値を年のリストに追加したいと思います。以前にループしたアイテム内。

var result = from p in fetchResults.Root.Elements("result") ... //etc

//Creating another list to contain desired results.
List<Event> eventDetails = new List<Event>();

//Create to store the previously looped title.
string previousTitle = string.Empty;

foreach (var item in result)
{
    if (item.Name == previousTitle)
    {
        //Not sure how to add item.yearId and item.Year to a Year
        //list inside the previously looped.
    }
    else
    {
        //otherwise add who item to eventDetails list.
        eventDetails.Add(item);
    }

    previousTitle = item.Name;
}

したがって、Eventクラスには、guid(item.YearId)とint(item.Year)で構成されるYearリストプロパティが含まれています。

これが理にかなっていることを願っています。どんな例でも素晴らしいでしょう。ありがとうございました。

4

3 に答える 3

0

前のアイテムへの参照を作成し、その参照を使用してコードが

var result = from p in fetchResults.Root.Elements("result")... //etc

//Creating another list to contain desired results.
List<Event> eventDetails = new List<Event>();

//Create to store the previously looped title.
string previousTitle = string.Empty;

//Reference to previous event
Event previousEvent = null;

foreach (var item in result)
{
    if (item.Name == previousTitle && previousEvent != null)
    {
        //Add to the previous event
        previousEvent.yearList.Add(item.Year);
        previousEvent.yearIdList.Add(item.YearId);
    }
    else
    {
        //otherwise add who item to eventDetails list.
        eventDetails.Add(item);
    }

    previousTitle = item.Name;
    previousEvent = item;
}
于 2013-02-06T13:53:25.600 に答える
0

xml からアイテムを取得するときは、グループ化を使用する必要があると思います。次のようなものです(あなたのxmlがどのように見えるかわからないため、単なるサンプルです):

var result = from p in fetchResults.Root.Elements("result")
             group p by p.Name into g
             select new Foo { 
                  Name = g.Key, 
                  Years = g.Select(x => (int)x.Element("year")).ToList()
             };
于 2013-02-06T13:49:47.197 に答える
0

このようなものを使用できます。イベントオブジェクトがどのように見えるかはわかりませんが、アイデアは得られるはずです。

List<Event> eventDetails = new List<Event>();
Event lastEvent = null;

foreach (var item in result)
{
    if ((lastEvent != null) && (lastEvent.Name == item.Name))
    {
        lastEvent.AddYearAndYearId(item.Year, item.YearId);
        eventDetails[eventDetails.Count - 1] = lastEvent;
    }
    else
    {
        eventDetails.Add(item);
        lastEvent = item;
    }
}
于 2013-02-06T13:55:19.703 に答える