Linq分组查询实例

var firstArea = new int[] { 1, 860, 20, 2468 };
//直辖市列表(根据区域一级ProvinceName分组)
var points = from info in model.MediaPointList
where firstArea.Contains(info.ProvinceId)
group info by info.ProvinceId into g
orderby g.Count() descending
select new
{
Cid = g.Key,
Count = g.Count(),
g
};
//非直辖市(地级市)列表(根据区域二级CityName分组)
var points2 = from info in model.MediaPointList
where !firstArea.Contains(info.ProvinceId)
group info by info.CityId into g
orderby g.Count() descending
select new
{
Cid = g.Key,
Count = g.Count(),
g
};
var points3 = points.Union(points2);//合并直辖市与一般地级市

==========================================================

#region 价格属性Json对象
if (model.MediaPriceList != null && model.MediaPriceList.Count > 0)
{
if (model.MediaPriceList.FirstOrDefault().Id != 0)
{
StringBuilder sbAttr = new StringBuilder();
var attributeValues = from item in model.MediaPriceList
orderby item.Id
group item by item.Id into priceGroup
orderby priceGroup.Key
select priceGroup;

var attributes = from item in model.MediaPriceList
orderby item.Id
group item by item.PriceId into priceGroup
orderby priceGroup.Key
select priceGroup;

sbAttr.Append("{\"AttrValueList\":[");
foreach (var item in attributeValues)
{
var _defaut = item.FirstOrDefault();
sbAttr.Append("{\"AttrName\": "); sbAttr.Append("\"" + _defaut.Name + "\""); sbAttr.Append(",");
sbAttr.Append("\"AttrValue\":[");
var temp = item.Select(i => i.AttributeValue).Distinct();
List<string> values = temp.ToList();

foreach (string value in values)
{
sbAttr.Append("{\"AttrId\": "); sbAttr.Append(_defaut.Id); sbAttr.Append(",");
sbAttr.Append("\"Value\": "); sbAttr.Append("\"" + value + "\""); sbAttr.Append(",");
sbAttr.Append("\"Unit\": "); sbAttr.Append("\"" + _defaut.UnitName + "\""); sbAttr.Append(",");

string _self = string.Empty;
var queryResult = model.MediaPriceList.Where(m => m.Id == _defaut.Id && m.AttributeValue == value).ToList();
foreach (var s in queryResult)
{
_self += "," + s.MediaPriceValueId;
}
if (!string.IsNullOrEmpty(_self))
{
_self = _self + ",";
}
sbAttr.Append("\"_selfIds\": "); sbAttr.Append("\"" + _self + "\""); sbAttr.Append(",");

string _gl = string.Empty;
var priceIds = model.MediaPriceList.Where(m => m.Id == _defaut.Id && m.AttributeValue == value).ToList().Select(s => s.PriceId).Distinct();
var queryResult2 = from p in model.MediaPriceList
where (priceIds).Contains(p.PriceId) && p.Id != _defaut.Id
select p;

foreach (var s in queryResult2)
{
_gl +=s.MediaPriceValueId + ",";
}
if (!string.IsNullOrEmpty(_gl))
{
_gl = _gl.TrimEnd(',');
}

sbAttr.Append("\"_glIds\": "); sbAttr.Append("\"" + _gl + "\"");

sbAttr.Append("},");
}
sbAttr.Remove(sbAttr.Length - 1, 1);
sbAttr.Append("]},");
}
sbAttr.Remove(sbAttr.Length - 1, 1);
sbAttr.Append("],");


sbAttr.Append("\"MediaPrice\":[");
foreach (var item in attributes)
{
var _FirstAttribute = item.FirstOrDefault();
//int _price = Convert.ToInt32(_FirstAttribute.CardPrice);
//string cardPrice = _price >= 10000 ? (_price / 10000).ToString() : _price.ToString();
decimal _price = _FirstAttribute.CardPrice += 0.0001m;
double _p1 = Convert.ToDouble(_price);
if (_price > 10000) _p1 = _p1 / 10000;
double _p2 = _p1 % 0.01;
string cardPrice = (_p1 - _p2).ToString();

string priceUnit = _price >= 10000 ? ("万元" + _FirstAttribute.PriceName) : ("元" + _FirstAttribute.PriceName);
sbAttr.Append("{\"AttrValuIds\": ");
string str = string.Empty;
foreach (var item2 in item)
{
str += "_" + item2.AttributeValue;
}
sbAttr.Append("\"" + str + "\"");
sbAttr.Append(",");
sbAttr.Append("\"Price\":\"" + cardPrice);
sbAttr.Append("\",\"PriceUnit\":\"" + priceUnit);
sbAttr.Append("\"},");
}
sbAttr.Remove(sbAttr.Length - 1, 1);
sbAttr.Append("]}");
ViewBag.AttrJson = sbAttr.ToString();
}
}
#endregion

转载于:https://www.cnblogs.com/hca-blog/archive/2013/03/11/2954041.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值