price的排序

echoxue 2010-12-09 11:31:05
List<price> listPrice = new List<price>()
privce pType
4 A
5 A
6 A
100 B
120 B
200 B
150 C
300 C
90 C

要求type为A的为price的降序,type B和C的price为升序
privce pType
6 A
5 A
4 A
90 C
100 B
120 B
150 C
200 B
300 C
...全文
150 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ktei2008 2010-12-09
  • 打赏
  • 举报
回复

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Globalization;

namespace Geek
{
public class Price
{
public Price(string type, double amount)
{
Type = type;
Amount = amount;
}

public string Type { get; private set; }
public double Amount { get; private set; }

public override string ToString()
{
return string.Format("{0} {1}", Type, Amount);
}
}

class Program
{
static void Main(string[] args)
{
List<Price> prices = new List<Price>()
{
new Price("A", 4),
new Price("A", 5),
new Price("A", 6),
new Price("B", 100),
new Price("B", 120),
new Price("B", 200),
new Price("C", 150),
new Price("C", 300),
new Price("C", 90)
};

List<Price> sortedPrices = prices.Where(p => p.Type == "A").OrderByDescending(p => p.Amount).Union(
prices.Where(p => p.Type != "A").OrderBy(p => p.Amount)).ToList();

Console.WriteLine("Input:");
prices.ForEach(p => Console.WriteLine(p));
Console.WriteLine();

Console.WriteLine("Output:");
sortedPrices.ForEach(p => Console.WriteLine(p));
Console.ReadKey();
}
}
}


I roughly wrote a sample. Hope this helps.
whrspsoft3723 2010-12-09
  • 打赏
  • 举报
回复
对比接口不是自己定义 的吗?
在对比的接口中实现。

无非iCompare(object x,object y){
(y.ptye = b x.pType ==b {
return x.priect - y.price
}

(y.ptye = a x.pType == a {
return (x.priect - y.price) * (-1)
}
else{
类型 不同时的处理
}


}


}
q107770540 2010-12-09
  • 打赏
  • 举报
回复

void Main()
{
List<Price> listPrice = new List<Price>
{
new Price { price=4, pType="A" },
new Price { price=5, pType="A" },
new Price { price=6, pType="A" },
new Price { price=100, pType="B" },
new Price { price=120, pType="B" },
new Price { price=200, pType="B" },
new Price { price=150, pType="C" },
new Price { price=300, pType="C" },
new Price { price=90, pType="C" }
};
var list1=listPrice.Where(l=>l.pType=="A").OrderByDescending(l=>l.price);
var list2=listPrice.Except(list1).OrderBy(l=>l.price);

var result=list1.Concat(list2);

}

class Price
{
public int price{get;set;}
public string pType{get;set;}
}

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧