乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 45|回复: 3

双重比较

[复制链接]

50

主题

114

帖子

2

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
314
发表于 2017-6-29 09:57:28 | 显示全部楼层 |阅读模式
我想根据两个值对列表进行排序, 是否可以在我的类BlkFleche中添加另一个比较?我需要列表基于X进行排序,然后基于Y,这些都是来自坐标的。 因此,如果我有这样的X和Y:[10,1][4,6][9,2][10,4][4,2][10,6],我希望最终结果是:[4,2][4,6][9,2][10,1][10,4][10,6]我使用列表,因为我需要保留与坐标相关的数据。public class blkFleche : IComparable。
{。
公共双精度位置 X { get; set; }。
公共双位置Y { get; set; }。
public string attNOCABLE { get; set; }。
public string attNOFIBRE { get; set; }。
           。
public int CompareTo(blkFleche other)。
{。
返回 this.positionX.CompareTo(other.positionX);。
}。
}。

private void btnRead()。
{。
List listBlkSort = new List();。
//...。
blkFleche blkNew = new blkFleche();。
//...。
blkNew.positionX = blkRef.Position.X;。
blkNew.positionY = blkRef.Position.Y;。
//...。
listBlkSort.Add(blkNew);。
//...。
listBlkSort.Sort();。
}。

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2017-6-29 10:11:27 | 显示全部楼层
稍后我可能有机会创建一个示例,但LINQ提供了一个您可以使用的示例。
https://msdn.microsoft.com/en-us/library/bb534743(v=vs.110)。aspx
回复

使用道具 举报

50

主题

114

帖子

2

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
314
发表于 2017-6-29 10:57:53 | 显示全部楼层
嗨,您可以这样实现I comparable :    public class blkFleche:I comparable  。
{。
public double positionX { get设置;}。
public double positionY { get设置;}。
公共字符串attNOCABLE { get设置;}。
公共字符串attNOFIBRE { get设置;}。

public int compare to(blk file che other)。
{。
int compareX = this . positionx . compare to(other . positionx);。
return compareX == 0?this . positiony . compare to(other . positiony):compareX;。
}。
}但正如Jeff所说,可以直接使用linq扩展方法:    List  List blk = new List ();。

//填充listBlk。

列表。
,order by(blk = > blk . positionx)。
,然后By(blk => blk.positionY)。
,to list();或者,更有效的方法是,如果您不绝对需要List :    IEnumerable  listBlkSort = List blk 。
,order by(blk = > blk . positionx)。
,then by(blk = > blk . positiony);。
回复

使用道具 举报

50

主题

114

帖子

2

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
314
发表于 2017-6-29 16:14:42 | 显示全部楼层
太好了,谢谢你们俩!
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-4 13:50 , Processed in 0.149521 second(s), 60 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表