public struct nariai
{
public string vardas;
public string pavarde;
public double eurai;
public double centai;
public double suma;
};
static void Main(string[] args)
{
double islaidos;
double surinktiPinigai = 0;
StreamReader failas = new StreamReader("nariai.txt");
string a = failas.ReadLine();
int nariuKiekis = int.Parse(a);
nariai[] narys = new nariai[nariuKiekis];
string[] info = new string[nariuKiekis];
for (int i = 0; i < nariuKiekis; i++)
{
info[i] = failas.ReadLine();
string[] informacija = info[i].Split(' ');
narys[i].vardas = informacija[0];
narys[i].pavarde = informacija[1];
narys[i].eurai = double.Parse(informacija[2]);
narys[i].centai = double.Parse(informacija[3]);
Console.WriteLine("{0} {1} {2} {3}", narys[i].vardas, narys[i].pavarde, narys[i].eurai, narys[i].centai);
}
for (int i = 0; i < nariuKiekis; i++)
{
islaidos = narys[i].eurai * 100 + narys[i].centai;
narys[i].suma = islaidos / 100 * 0.25;
islaidos = narys[i].suma;
Console.WriteLine(narys[i].suma);
surinktiPinigai = surinktiPinigai + islaidos;
}
Console.WriteLine("Surinkti pinigai bendroms išlaidoms: {0} Eurai.", surinktiPinigai);
}
文件如下:
命令如下:
我需要找出谁在“ public double suma”结构中具有最大的价值,并且我需要写下它的名字和姓氏。
答案 0 :(得分:1)
您想要的是从列表中检索最大为suma
的项目,然后获取其其他属性。
var item = narys.OrderByDescending(i => i.suma).FirstOrDefault();
var name = $"{item?.vardas} {item?.pavarde}";
请注意,由于验证?.
的C#6.0不为null,因此请使用item
运算符。如果在执行此查询时您确定集合不是空的,则只需:
var item = narys.OrderByDescending(i => i.suma).First();
var name = $"{item.vardas} {item.pavarde}";
您还可以使用MoreLinq的MaxBy
,其中:
根据给定的投影返回给定序列的最大元素。
答案 1 :(得分:0)
您可以尝试使用LINQ:
var maxNarys = narys.OrderByDescending(n => n.suma)
.FirstOrDefault();
然后访问其属性,如下所示:
var maxNarvardas = maxNarys.vardas;
编辑
还要仔细查看您的代码:
看来您可以合并两个循环并添加一个变量来查找max:
var maxSuma = double.MinValue;
var maxIndex = -1;
for (int i = 0; i < nariuKiekis; i++)
{
info[i] = failas.ReadLine();
string[] informacija = info[i].Split(' ');
narys[i].vardas = informacija[0];
narys[i].pavarde = informacija[1];
narys[i].eurai = double.Parse(informacija[2]);
narys[i].centai = double.Parse(informacija[3]);
Console.WriteLine("{0} {1} {2} {3}", narys[i].vardas, narys[i].pavarde, narys[i].eurai, narys[i].centai);
islaidos = narys[i].eurai * 100 + narys[i].centai;
narys[i].suma = islaidos / 100 * 0.25;
islaidos = narys[i].suma;
if(maxSuma < narys[i].suma)
{
maxSuma = narys[i].suma;
maxIndex = i;
}
surinktiPinigai = surinktiPinigai + islaidos;
}
if(maxIndex>=0) Console.WriteLine(narys[maxIndex].suma);