Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将项目按从最小到最大的顺序排列并移动到临时列表C#_C# - Fatal编程技术网

如何将项目按从最小到最大的顺序排列并移动到临时列表C#

如何将项目按从最小到最大的顺序排列并移动到临时列表C#,c#,C#,因此,我尝试获取一个项目列表,并将其按最小值排序,以此类推。然后我希望将其移动到一个临时列表,并通过添加等方式检查下一项是否与上一项相同。 这是我到目前为止所做的,但它是从最大值到最小值,所以我用它减去1而不是加 if (CurrentCards.OrderBy(n => n.Total).ToList()[0].Total == CurrentCards[1].Total - 1 && CurrentCards[1].Total == Cu

因此,我尝试获取一个项目列表,并将其按最小值排序,以此类推。然后我希望将其移动到一个临时列表,并通过添加等方式检查下一项是否与上一项相同。 这是我到目前为止所做的,但它是从最大值到最小值,所以我用它减去1而不是加

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) ...