C# 使用LINQ在数组C中查找重复的最小值#

C# 使用LINQ在数组C中查找重复的最小值#,c#,linq,C#,Linq,我有一个包含15名员工的数组,我想在列表框中显示工资最低的员工。但当我有一个以上的员工拿着同样的低工资时,它只打印其中一个15次。你能告诉我如何打印所有工资最低的员工吗?代码位于最低的salarycheck()方法 名称空间编程分配 { 公共部分类Form1:Form { 员工[]myEmployee=新员工[15]; 公共字符串优先; 最后是公共字符串; 公共int theID; 公共双色拉; 公共图书馆; 公共表格1() { 初始化组件(); } 私人雇员() { 做 { 尝试 { theF

我有一个包含15名员工的数组,我想在列表框中显示工资最低的员工。但当我有一个以上的员工拿着同样的低工资时,它只打印其中一个15次。你能告诉我如何打印所有工资最低的员工吗?代码位于最低的salarycheck()方法

名称空间编程分配
{
公共部分类Form1:Form
{
员工[]myEmployee=新员工[15];
公共字符串优先;
最后是公共字符串;
公共int theID;
公共双色拉;
公共图书馆;
公共表格1()
{
初始化组件();
}
私人雇员()
{
做
{
尝试
{
theFirst=Convert.ToString(firstBox.Text);
最后一个=Convert.ToString(lastBox.Text);
theID=Convert.ToInt32(idBox.Text);
theSalary=Convert.ToDouble(salaryBox.Text);
如果(第一个长度>0和最后一个长度>0和ID>0和长度>0)
{
for(int i=0;iem.yearlySalary);
var theMin=myEmployee.Where(em=>em.yearlySalary==theSal);
foreach(以分钟为单位的var emp)
{
string message=string.Format(“最低工资:{0}{1}{2}{3}”,emp.firstName,emp.lastName,emp.id,theSal);
最下面的.Items.Add(消息);
}
}
私有void saveBtn_单击(对象发送方,事件参数e)
{
增加雇员();
}
私有无效最低工资点击(对象发送者,事件参数e)
{
最低工资支票();
}
}
}

添加新的
员工时,您似乎将列表中所有现有的
员工替换为新添加的员工:

for (int i = 0; i < myEmployee.Length; i++)
{
    Employee emp = new Employee(theFirst, theLast, theID, theSalary);
    myEmployee[i] = emp;
}
你可以用

Employee emp = new Employee(theFirst, theLast, theID, theSalary);
myEmployee.Add(emp);

在此之后,您的代码应该可以正常工作,因为我认为您的LINQ查询没有问题。

如果不查看您的
员工
代码,我们就无法真正判断出问题所在。这是非常奇怪的,你有一个控制台应用程序,也似乎是一种形式,虽然。。。理想情况下,将其减少到一个最小值。纯粹的控制台应用程序会更简单。(另外,请学习SO中的格式化代码-请参阅)您的代码应该可以按需要工作。你能提供一个例子吗?@SándorMátyásMárton好吧,排序是O(n logn),而寻找最小值并对其进行过滤是O(n),因此后者有很好的理由,我不知道˛
continueLoop
的目的是什么-我认为您应该去掉
do…while
循环和
continueLoop
变量。在每个LinQ语句之前调用
ToList()
,没有任何意义,会浪费性能。另外,只发布代码而不进行解释也不是很有帮助。ToList()因为TC将myEmployee声明为数组。@LeonidMalyshev您也可以在数组上使用LINQ函数。LINQ在
T[]
上工作得很好,因为它是
IEnumerable
。这里有一个错误:List myEmployee=new ArrayList();找不到类型或命名空间。可能格式是worng?您导入了所有必需的包吗?我认为您需要
System.Collections.Generic
才能使通用集合正常工作(大多数IDE都会自动为您执行此操作)。
for (int i = 0; i < myEmployee.Length; i++)
{
    Employee emp = new Employee(theFirst, theLast, theID, theSalary);
    myEmployee[i] = emp;
}
for (int i = 0; i < myEmployee.Length; i++)
{
    Employee emp = new Employee(theFirst, theLast, theID, theSalary);
    myEmployee[i] = emp;
}
Employee emp = new Employee(theFirst, theLast, theID, theSalary);
myEmployee.Add(emp);