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您的项目之一,因此您可以执行以下操作:

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();

之后,您可以Items以任何您希望的方式显示 ,例如 sorted byStatusItemssorted by ClosingDate

response.Results但也许只按状态排序然后按截止日期就足够了。

于 2013-04-03T10:25:02.683 回答