如图所示,在我们统计数据的时候往往需要根据某一个字段去统计所以的有该字段的数据,并且根据字段来统计的字段也是不重复的!
var MarFamous = (from tbmarkst in myModels.B_Market
join tbMarketDeRE in myModels.R_MarketDeRelut on tbmarkst.MarketID equals tbMarketDeRE.MarketID
join tbCommDERE in myModels.R_CommoDeRelut on tbMarketDeRE.CommDeRelsutID equals tbCommDERE.CommDeRelsutID
join tbComm in myModels.B_Commodits on tbCommDERE.CommID equals tbComm.CommID
join tbFaoums in myModels.B_Famous on tbCommDERE.FamousID equals tbFaoums.FamousID
select tbFaoums.FamousName).Distinct();
联表查询出你想要进行统计的数据所拥有的这个字段的所有的数据(tbFaoums.FamousName),再通过一个Distinct属性把这些字段中重复的数据去掉,剩下的就是这个字段中不重复的数据了。
Foreach循环上面得到的不重复的字段,根据某一个值统计一条数据,有多少条字段就统计多少条数据!
然后就是数据的统计了,我这里使用的方法的是先一开始就查询出来全部,然后在在里面进行筛选,至于具体的查询的数据的方法根据个人实际情况而定,最主要的就是筛选出来的数据的操作等等:例如{
MarManyer = Convert.ToDecimal(MarManyer) + (itemes.MarMenyer * itemes.Number);
Univalent = Convert.ToDecimal(Univalent) + (itemes.Univalent * itemes.Number);
UnivalentNumber = listAcesDeRe.Sum(S => Convert.ToInt32(S.Number)).ToString()}求和
foreach (var item in MarFamous)
{
MarManyer = 0; Univalent = 0;
var FamousID = myModels.B_Famous.Where(S => S.FamousName.Trim() == item).SingleOrDefault().FamousID;
var list4 = list3.Where(S => S.FamousID == FamousID).ToList();
List listAcesDeRe = new List();
foreach (var itemes in list4)
{
if (ToFalse != true)
{
itemes.Number = Convert.ToInt32(-(itemes.THnumber));
}
MarManyer = Convert.ToDecimal(MarManyer) + (itemes.MarMenyer * itemes.Number);
Univalent = Convert.ToDecimal(Univalent) + (itemes.Univalent * itemes.Number);
listAcesDeRe.Add(itemes);
}
if (listAcesDeRe.Count() > 0)
{
AccessVo Linqsss = new AccessVo()
{
UnivalentNumber = listAcesDeRe.Sum(S => Convert.ToInt32(S.Number)).ToString(),
MarMenySJ = (MarManyer * listAcesDeRe[0].integral).ToString(),//实收金额
MarMenyZJe = MarManyer.ToString(),//吊牌金额
Univalent = Univalent.ToString(),//成本金额
ZhoukouMarMany = (MarManyer - Convert.ToDecimal(MarManyer * listAcesDeRe[0].integral)).ToString(),
XJ = item,
};
for (int k = 0; k < listAcesDeRe.Count(); k++)
{
Linqsss.AccessDereID += listAcesDeRe[k].CommID.ToString() + ‘;’;
}
listReslut.Add(Linqsss);
}
}