0

ektron 検索結果項目の結果セットをグループ化して画面に出力しようとしています。次のコードを使用します。

var groupdResults = 
    from result in response.Results
    orderby result[SearchSmartFormProperty.GetDateProperty("/root/FundClosingDate")]
    group result by result[SearchSmartFormProperty.GetStringProperty("/root/DeadlineAltText")] 
    into statusGroup
    select new 
    { 
        closingDate =statusGroup.Key,
        count= statusGroup.Count
    };

次に、これらをリストビューに追加します: uxSearchResultView.DataSource = groupdResults;

私が抱えている問題は、タイトル、クロージング日付などの結果セットからすべてのデータを出力する必要があることです。現在、クロージング 2 オープン 1 などの出力のみです。

誰かが提供できる助けに本当に感謝します

- - - - - - - - - - - -更新しました - - - - - - - - - - - - - ----------- 私は今、実用的な解決策を持っていると思いますが、ちょっと面倒です

var groupdResults = from result in response.Results
                                orderby result[SearchSmartFormProperty.GetDateProperty("/root/FundClosingDate")]
                                group result by result[SearchSmartFormProperty.GetStringProperty("/root/DeadlineAltText")] 
                                into statusGroup
                                    select new 
                                    {
                                        closingDate = statusGroup.Key,
                                        count = statusGroup.Count(),
                                        items = statusGroup.ToList()
                                    };
    List<Ektron.Cms.Search.SearchResultData> SRDATA = new List<Ektron.Cms.Search.SearchResultData>();
            foreach (var result in groupdResults)
            {
                for (int i = 0; i < result.items.Count; i++)
                {
                    SRDATA.Add(result.items[i]);
                }
            }

よりクリーンな実装に関する情報はありますか? ありがとう

4

3 に答える 3

1

次のことができます。

select new 
{ 
    closingDate =statusGroup.Key,
    count= statusGroup.Count(),
    items = statusGroup.ToList()
};

itemsプロパティには、そのグループに割り当てられたアイテムが含まれますList

于 2013-04-03T10:23:38.600 に答える
0

匿名型を使用するのではなく、それを新しいオブジェクトに入れます。

var groupdResults = 
from result in response.Results
orderby result[SearchSmartFormProperty.GetDateProperty("/root/FundClosingDate")]
group result by result[SearchSmartFormProperty.GetStringProperty("/root/DeadlineAltText")] 
into statusGroup
select new ResultObject
{ 
    closingDate = statusGroup.First().ClosingDate,
    ....
};
于 2013-04-03T10:23:19.237 に答える
0

(修正)

結果をキャプチャするにはクラスが必要だと思います:

class GroupResult
{
    public string Status { get; set; }
    public ICollection<SearchResultData> Items { get; set; }
}

グループ化statusGroupIEnumerableアイテムの 1 つなので、次のことができます。

var groupdResults = 
    from result in response.Results
    group result by result[SearchSmartFormProperty.GetStringProperty("/root/DeadlineAltText")] 
    into statusGroup
    select new GroupResult
    { 
        Status =statusGroup.Key,
        Items = statusGroup.ToList()
    }.ToList();

その後、 sorted byやsorted by などItems、任意の方法で を表示できます。StatusItemsClosingDate

response.Resultsただし、ステータスで並べ替えてから締め切り日で並べ替えるだけで十分かもしれません。

于 2013-04-03T10:25:02.683 に答える