调整数据列表内的顺序,现写成扩展方法工具类
public
static
class
CollectionHelper
{
//交换List项的顺序
public
static
bool
ExchangeOrder<T>(
this
IList<T> list,
int
sourceID,
int
newID)
{
if
(sourceID >= list.Count || sourceID < 0 || newID >= list.Count || newID < 0 || sourceID == newID)
return
false
;
try
{
var
temp = list[sourceID];
list[sourceID] = list[newID];
list[newID] = temp;
return
true
;
}
catch
(Exception)
{
return
false
;
}
}
/// <summary>
/// 向上移动
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="list">The 数据列表 list</param>
/// <param name="id">The 需要移动的id</param>
/// <param name="num">The 移动的 位数. 默认为1, 几位就向上移动几位</param>
/// <returns></returns>
public
static
bool
MoveUpper<T>(
this
IList<T> list,
int
id,
int
num = 1)
{
return
list.MoveItem(id, id - num);
}
//向下移动
public
static
bool
MoveDown<T>(
this
IList<T> list,
int
id,
int
num = 1)
{
return
list.MoveItem(id, id + num);
}
//移动到顶部
public
static
bool
MoveTopper<T>(
this
IList<T> list,
int
id)
{
return
list.MoveItem(id, 0);
}
//移动到底部
public
static
bool
MoveBottom<T>(
this
IList<T> list,
int
id)
{
return
list.MoveItem(id, list.Count -1);
}
/// <summary>
/// 移动
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="list">数据列表</param>
/// <param name="sourceID">原来的数据ID</param>
/// <param name="newID">移动后数据ID</param>
/// <returns></returns>
public
static
bool
MoveItem<T>(
this
IList<T> list,
int
sourceID,
int
newID)
{
if
(sourceID >= list.Count || sourceID < 0 || newID >= list.Count || newID < 0 || sourceID == newID)
return
false
;
try
{
var
temp = list[sourceID];
list.RemoveAt(sourceID);
list.Insert(newID, temp);
return
true
;
}
catch
(Exception)
{
return
false
;
}
}
}
|
调用的方法:
class
CollectionSample
{
public
void
Test()
{
List<Student> stuList =
new
List<Student>();
Student stu =
new
Student(1,
"zhangSan"
);
stuList.Add(stu);
stu =
new
Student(2,
"LiSi"
);
stuList.Add(stu);
stu =
new
Student(3,
"WangWu"
);
stuList.Add(stu);
stu =
new
Student(4,
"ZhangLiu"
);
stuList.Add(stu);
string
msg =
string
.Empty;
foreach
(Student item
in
stuList)
{
msg += String.Format(
"ID: {0}, Name: {1} "
, item.id, item.name);
}
//Exchange(stuList);
Move(stuList);
}
private
static
void
Exchange(List<Student> stuList)
{
CollectionHelper.ExchangeOrder(stuList, 2, 1);
string
newMsg =
string
.Empty;
foreach
(Student item
in
stuList)
{
newMsg += String.Format(
"ID: {0}, Name: {1} "
, item.id, item.name);
}
}
private
static
void
Move(List<Student> stuList)
{
CollectionHelper.MoveUpper(stuList, 2, 3);
string
newMsg =
string
.Empty;
foreach
(Student item
in
stuList)
{
newMsg += String.Format(
"ID: {0}, Name: {1} "
, item.id, item.name);
}
}
}
|
本文转自Work Hard Work Smart博客园博客,原文链接:http://www.cnblogs.com/linlf03/archive/2012/06/18/2553360.html,如需转载请自行联系原作者