2017-01-24 3 views
-2

別のアプリケーションが私にunsortable値を送信します。だから私はこれをしなかった:並べ替えのためのC#配列内の2つの別々の値

string[] myarray = newString[size]; 
for (uint32 i = 0; i<sizOfIncoming;i++){ 
    myarray[i]=incoming[i].location.ToString(); 
    Console.WriteLine(incoming[i].id.ToSTring();) 
} 
array.Sort(myarray); 
for (uint32 x = 0; x<sizeOfIncoming;x++){ 
    Console.WriteLine(myarray[x]); 
} 

しかし、今、私だけではなく、必要な「場所」だけでなく、「ID」

は、着信は次のようになります。

5,A 
1,X 
3,N 
2,Z 
4,E 

と私は必要な最終的にはこのように:

1,X 
2,Z 
3,N 
4,E 
5,A 

どうすればいいですか?あなたがで注文したいあなたのオブジェクトの一部で決めることができますLINQを使用して

PS C#の初心者

+1

着信の種類は何ですか?リスト? –

+0

私はこの 'FTDI.FT_DEVICE_INFO_NODE [] ftdiDeviceList =新しいFTDI.FT_DEVICE_INFO_NODE [ftdiDeviceCount]のエイリアスとして着信を使用しました ftdiDeviceListは私の場合は着信に置き換えられます –

答えて

2

:あなたの着信配列は、「ID」と「場所」フィールドがある場合は

は、ここにどのように並べ替えますID:

var sortedArray = incoming.OrderBy(x => x.id).ToArray(); 

それとも、場所によって注文したい場合:

var sortedArray = incoming.OrderBy(x => x.location).ToArray(); 

は、その後、内容を印刷:

for (int i = 0; i<sortedArray.Length;i++) 
{ 
    Console.WriteLine($"{sortedArray[i].id} {sortedArray[i].location}"); 
} 
0
var sortedData = myarray 
    .Select(v => v.Split(',')) 
    .Select(v => new { Id = Convert.ToInt32(v[0]), Location = v[1] }) 
    .OrderBy(v => v.Id) 
    .ThenBy(v => v.Location); 

あなたはこの作業を取得する最初のファイルにusing System.Linq;を追加する必要があります。このコードは、元のコレクションを文字列配列のコレクションに投影するためにSelectを使用して動作します。次に、作成した各文字列配列に対して、 "Id"と "Location"プロパティを持つ新しいanonymous typeを作成して、操作が簡単になります。最後に、コレクションを最初に "Id"プロパティでソートし、次に "Location"プロパティで並べ替えることができます。

関連する問題