Для загрузки нескольких изображений (модификация к решению @ IvanBaev)
function readURL(input) {
if (input.files && input.files[0]) {
var i;
for (i = 0; i < input.files.length; ++i) {
var reader = new FileReader();
reader.onload = function (e) {
$('#form1').append('');
}
reader.readAsDataURL(input.files[i]);
}
}
}
http://jsfiddle.net/LvsYc/12330/
Надеюсь, это поможет кому-то.
Самый простой способ, который я могу придумать, это использовать Linq:
List<Order> SortedList = objListOrder.OrderBy(o=>o.OrderDate).ToList();
Используйте LiNQ OrderBy
List<Order> objListOrder=new List<Order> ();
objListOrder=GetOrderList().OrderBy(o=>o.orderid).ToList();
Использование LINQ
objListOrder = GetOrderList()
.OrderBy(o => o.OrderDate)
.ToList();
objListOrder = GetOrderList()
.OrderBy(o => o.OrderId)
.ToList();
Делаем это без Linq, как вы сказали:
public class Order : IComparable
{
public DateTime OrderDate { get; set; }
public int OrderId { get; set; }
public int CompareTo(object obj)
{
Order orderToCompare = obj as Order;
if (orderToCompare.OrderDate < OrderDate || orderToCompare.OrderId < OrderId)
{
return 1;
}
if (orderToCompare.OrderDate > OrderDate || orderToCompare.OrderId > OrderId)
{
return -1;
}
// The orders are equivalent.
return 0;
}
}
Затем просто вызовите .sort () в вашем списке заказов
Самый простой способ упорядочить список - использовать OrderBy
List<Order> objListOrder =
source.OrderBy(order => order.OrderDate).ToList();
Если вы хотите упорядочить по нескольким столбцам, как в следующем SQL-запросе.
ORDER BY OrderDate, OrderId
Для этого вы можете использовать ThenBy
, как показано ниже.
List<Order> objListOrder =
source.OrderBy(order => order.OrderDate).ThenBy(order => order.OrderId).ToList();
Чтобы сделать это без LINQ на .Net2.0:
List<Order> objListOrder = GetOrderList();
objListOrder.Sort(
delegate(Order p1, Order p2)
{
return p1.OrderDate.CompareTo(p2.OrderDate);
}
);
Если вы на .Net3.0, то ответ LukeH ответ - это то, что вам нужно.
Для сортировки по нескольким свойствам, вы все еще можете сделать это в делегате. Например:
orderList.Sort(
delegate(Order p1, Order p2)
{
int compareDate = p1.Date.CompareTo(p2.Date);
if (compareDate == 0)
{
return p2.OrderID.CompareTo(p1.OrderID);
}
return compareDate;
}
);
Это даст вам возрастающие даты с убывающими orderIds.
Однако я бы не рекомендовал использовать делегаты, так как это означает много мест без повторного использования кода. Вам следует реализовать IComparer
и просто передать его методу Sort
. См. здесь.
public class MyOrderingClass : IComparer<Order>
{
public int Compare(Order x, Order y)
{
int compareDate = x.Date.CompareTo(y.Date);
if (compareDate == 0)
{
return x.OrderID.CompareTo(y.OrderID);
}
return compareDate;
}
}
И затем, чтобы использовать этот класс IComparer, просто инстанцируйте его и передайте его в метод Sort:
IComparer<Order> comparer = new MyOrderingClass();
orderList.Sort(comparer);
Если вам нужно сортировать список на месте, то вы можете использовать Sort
метод, передав Comparison
делегат:
objListOrder.Sort((x, y) => x.OrderDate.CompareTo(y.OrderDate));
Если вы предпочитаете создать новую отсортированную последовательность, а не сортировать на месте, то вы можете использовать OrderBy
метод LINQ, как упоминалось в других ответах.