我正在尝试对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
};
然后我将这些添加到listview:uxSearchResultView.DataSource = groupdResults;
我遇到的问题是我需要输出结果集中的所有数据,例如title,closingdate等。,它目前仅输出,例如 结束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]);
}
}
关于更清洁实施的任何输入? 感谢
答案 0 :(得分:1)
您可以执行以下操作:
select new
{
closingDate =statusGroup.Key,
count= statusGroup.Count(),
items = statusGroup.ToList()
};
items
属性将包含在List
中分配给该组的项目。
答案 1 :(得分: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,
....
};
答案 2 :(得分:0)
(修改)
我认为您需要一个班级来捕捉您的结果:
class GroupResult
{
public string Status { get; set; }
public ICollection<SearchResultData> Items { get; set; }
}
分组statusGroup
是您商品的IEnumerable
,因此您可以这样做:
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
,例如按Status
排序,Items
按ClosingDate
排序。
但也许只需按状态排序response.Results
,然后按截止日期排序。