如何将项目按从最小到最大的顺序排列并移动到临时列表C#
因此,我尝试获取一个项目列表,并将其按最小值排序,以此类推。然后我希望将其移动到一个临时列表,并通过添加等方式检查下一项是否与上一项相同。 这是我到目前为止所做的,但它是从最大值到最小值,所以我用它减去1而不是加如何将项目按从最小到最大的顺序排列并移动到临时列表C#,c#,C#,因此,我尝试获取一个项目列表,并将其按最小值排序,以此类推。然后我希望将其移动到一个临时列表,并通过添加等方式检查下一项是否与上一项相同。 这是我到目前为止所做的,但它是从最大值到最小值,所以我用它减去1而不是加 if (CurrentCards.OrderBy(n => n.Total).ToList()[0].Total == CurrentCards[1].Total - 1 && CurrentCards[1].Total == Cu
if (CurrentCards.OrderBy(n => n.Total).ToList()[0].Total == CurrentCards[1].Total - 1 && CurrentCards[1].Total ==
CurrentCards[2].Total - 1 && CurrentCards[2].Total == CurrentCards[3].Total - 1 &&
CurrentCards[3].Total == CurrentCards[4].Total - 1)
我做错了什么?
我是否需要为每个项目使用OrderBy
谢谢你的帮助 听起来你想做的是泡泡式的。这里有一个C#bubble排序示例的链接:我不是100%关注你的问题,尤其是这一部分: 。。。通过添加…检查下一项是否与上一项相同 您的代码中有-1,并且根据您的用法,您将只检查相邻值是否相差一 如果您选择的总数不是1,请尝试分组方式(下面的代码未经测试):
//这应该是一个有效访问的匿名对象列表
//元组
var nonDistinct=CurrentCards.GroupBy(
卡片=>card.Total,
(总计,卡片)=>new{total=total,Count=cards.Count()})
其中(obj=>obj.Count>1);
您的代码错误
CurrentCards.OrderBy(n => n.Total).ToList()[0]
创建新列表,然后从中获取第一项。原来的名单保持不变
CurrentCards[1]
然后从原始未排序列表中获取第二项
您应该删除列表并保存,然后使用此保存的列表
var orderedCards = CurrentCards.OrderBy(n => n.Total).ToList();
然后你应该使用来表示
周期和时间变量
bool temp = true;
// dont forget to add check if your list has enought items
for(int i = 0;i<orderedCards.Count()-1;i++)
{
temp = temp && orderedCards[i].Total == orderedCards[i+1].Total + 1
}
if (temp) ...
bool temp=true;
//别忘了添加检查列表中是否有足够的项目
对于(inti=0;iUnclear to me),您是希望获得所有具有相同值的值并复制到新列表,还是希望获得不同的值?
bool temp = true;
// dont forget to add check if your list has enought items
for(int i = 0;i<orderedCards.Count()-1;i++)
{
temp = temp && orderedCards[i].Total == orderedCards[i+1].Total + 1
}
if (temp) ...