基本上,每当用户点击项目下的任何图片时,我都会尝试返回图片幻灯片的imageURL列表。
我已经处理了一个包含imageID的列表,并且根据projectId,imageid返回了ImageUrl,传入:
List<ProjectImageBO> pi = pd.GetProjectImagesByProjectID(projectId, imageid, pageno);
我想按照以下顺序重新安排返回的列表项:
返回原始列表:&lt; 1Item,2Item,3Item,4Item,5Item&gt;
如果用户已将3作为imageid的参数传递给:
pd.GetProjectImagesByProjectID(projectId, imageid, pageno)
然后返回的列表应排列为:&lt; 3Item,4Item,5Item,1Item,2ItemIte&gt;。
我已经努力了:
public List<ProjectImageBO> GetListOfImagesByProjectPagination(int projectId, int imageid, int pageno)
{
ProjectImageDAL pd = new ProjectImageDAL();
List<ProjectImageBO> pi = pd.GetProjectImagesByProjectID(projectId, imageid, pageno);
if (imageid != 0)
{
var index = pi.FindIndex(x => x.ImageID == imageid);
if (index != null)
{
if (index > 0)
{
var item = pi[index];
pi[index] = pi[0];
pi[0] = item;
}
}
}
return pi;
}
简单地交换列表中的项目,如:&lt; 3Item,2Item,1Item,4Item,5Item&gt; - 这不是我要求的。 任何建议或示例代码??
答案 0 :(得分:1)
这样的东西? Items是原始列表。
int idx = 2;
return items.Skip(idx).Union(items.Take(idx)).ToList();
答案 1 :(得分:0)
好吧,我想你可以使用Skip
和Take
的组合:
var result = new List<ProjectImageBO>();
var tmp = // get the whole list before
// get the last three items:
result.AddRange(tmp.Skip(imageID - 1));
// get the first two items
result.AddRange(tmp.Take(imageID - 1));