我有一个二维数组,其中包含与6个不同的推销员一起销售的商品数量。我正在尝试对数组进行排序,以查找其中所有商品中售出量最大的商品。
我的问题是能够对二维数组进行排序并读取其内容。
我尝试过
int[,] sortedByFirstElement = nrArticles.OrderBy(x => x[0]);
这给我一个错误消息:“'int [,]不包含'OrderBy'的定义,并且没有可访问的扩展方法...等等”
我已经尝试过,这给了我一条错误消息,声称输入不是int。
Array.Sort(nrArticles);
foreach (int value in nrArticles)
{
Console.Write(value);
}
以下代码是到目前为止我得到的,不包括排序尝试。
string[,] salesMan = new string[6, 3];
int[,] nrArticles = new int[6, 0];
string line;
int nr;
for (int i = 0; i < 5; i++)
{
Console.Write("Enter the name of salesman: ");
line = Console.ReadLine();
salesMan[i, 0] = line;
Console.Write("Enter the social number: ");
line = Console.ReadLine();
salesMan[i, 1] = line;
Console.Write("Enter the district: ");
line = Console.ReadLine();
salesMan[i, 2] = line;
//This is where i convert the entered value into an int taken
by the array
Console.Write("Enter the amount of sold articles: ");
line = Console.ReadLine();
nr = Int32.Parse(line);
nrArticles[i, 0] = nr;
}
Console.Write("Namn \t\tPersnr \t\t\tDistrikt \t\tAntal");
for (int j = 0; j < 5; j++)
{
Console.Write("\n"+salesMan[j, 0] +"\t\t");
Console.Write(salesMan[j, 1] + "\t\t\t");
Console.Write(salesMan[j, 2] + "\t\t\t");
Console.Write(nrArticles[j, 0]);
}
//Here's where i'd put my code of sorting my integer array
nrArticles (If i had one).
}
}
它的预期结果将看到一个示例,例如:231、183、130、122、40、10。也许是一个单独的数组,甚至是字符串?
任何帮助将不胜感激。
答案 0 :(得分:2)
我认为,简短的答案是2D数组没有内置的OrderBy方法,因此您需要自己处理。我认为您使用Array.Sort方法是正确的,但这仍然仅限于对一维数组进行排序。
其他人都提到了这一点,但是我认为您将在2D整数数组上遇到很多麻烦。除非有特定的原因按原样进行,否则我认为最好为销售员创建一个类,该类封装与作为一个实体的单个销售员有关的全部属性。 (例如,名称,地区,出售的商品等)。
一旦有了定义明确的类型定义,例如LINQ就可以为您希望如何组织这些对象的集合提供很大的灵活性。
以下是一些非常简单的示例代码:
using System.Linq;
namespace ConsoleApp1
{
class Program
{
public class Salesman
{
public string Name { get; set; }
public int District { get; set; }
public int ArticlesSold { get; set; }
}
static void Main(string[] args)
{
var salesmen = new Salesman[] {
// Fill collection by some means...
};
// Then for example:
// sort by Ascending sales count
var sorted = salesmen.OrderBy(x => x.ArticlesSold);
// or descending
sorted = salesmen.OrderByDescending(x => x.ArticlesSold);
// or by something more complex
sorted = salesmen.OrderBy(x => x.ArticlesSold).ThenBy(x => x.District);
}
}
}
答案 1 :(得分:1)
使用int [] []代替;这样,您可以在结构上使用Linq。
scanf