[英]SQL & C# - I have a query that is giving me all the details I want but i am not sure how to get a Total Price
下面是我的代码和我从中得到的输出。 我得到正确的输出,但我需要计算总价格,我不知道如何去做。
任何帮助深表感谢
// Search Database
if (query.Any())
{
int carID = query.FirstOrDefault().Id;
string carRegg = query.FirstOrDefault().regNo;
string carMake = query.FirstOrDefault().Make;
string carModel = query.FirstOrDefault().Model;
int hourS = query1.FirstOrDefault().Hours;
DateTime dateS = query1.FirstOrDefault().Date;
var test = (from a in dbC.Cars
where a.Id == carID
join b in dbC.Services on a.Id equals b.CarId
join c in dbC.PartsUseds on b.ServiceWrkNo equals c.ServiceServiceWrkNo
join d in dbC.Parts on c.PartsPartNo equals d.PartNo
where a.Id == carID && b.Date == ((from b1 in dbC.Services where b1.CarId == b.CarId select b1.Date).Max())
select new
{
serviceNum = b.ServiceWrkNo,
date = b.Date,
PartNo = c.PartsUsedNo,
replacedParts = d.PartName,
priceP = d.Price,
hourS = b.Hours
}).ToList();
Console.WriteLine();
Console.WriteLine("- - - - - - - - - - - - - - - - - - - - - - - - - - - - ");
Console.WriteLine("CAR SERVICE DETAILS: \t\t " + carMake + " " + carModel);
Console.WriteLine("- - - - - - - - - - - - - - - - - - - - - - - - - - - - " + "\n");
Console.WriteLine("- - - - - - - - - - - - - - - - - - - - - - - - - - - - ");
Console.WriteLine("LAST SERVICE TOOK PLACE ON:\t " + dateS.ToShortDateString());
Console.WriteLine("- - - - - - - - - - - - - - - - - - - - - - - - - - - - " + "\n");
Console.WriteLine("- - - - - - - - - - - - - - - - - - - - - - - - - - - - ");
Console.WriteLine("HOURS SPENT ON THE SERVICE:\t " + hourS);
Console.WriteLine("- - - - - - - - - - - - - - - - - - - - - - - - - - - - " + "\n");
Console.WriteLine("- - - - - - - - - - - - - - - - - - - - - - - - - - - - ");
Console.WriteLine("PARTS USED: \t\t\tPRICE PART");
Console.WriteLine("- - - - - - - - - - - - - - - - - - - - - - - - - - - - " + "\n");
foreach (var item in test)
{
Console.WriteLine("\t\t\t " + item.priceP + "\t " + item.replacedParts);
}
Console.WriteLine("- - - - - - - - - - - - - - - - - - - - - - - - - - - - " + "\n");
}
由于test
是包含您要求总和的所有元素的List
,因此您可以使用Linq来计算总数,如下所示:
var total = test.Sum(x => x.priceP);
除此之外,我将为这些调用引入一个临时变量:
int carID = query.FirstOrDefault().Id;
string carRegg = query.FirstOrDefault().regNo;
string carMake = query.FirstOrDefault().Make;
string carModel = query.FirstOrDefault().Model;
int hourS = query1.FirstOrDefault().Hours;
DateTime dateS = query1.FirstOrDefault().Date;
像这样:
var result = query.FirstOrDefault();
int carID = result.Id;
string carRegg = result.regNo;
string carMake = result.Make;
string carModel = result.Model;
int hourS = result.Hours;
DateTime dateS = result.Date;
这应该可以提高性能,因为您可以防止之前可能发生的多个数据库调用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.