LinQ to Object --- 有关于Dictionary、SQL(LEFT OUTER JOIN \ Group OrderBy Sum) 操作

Dictionary操作

 

c#

var vhe = new Dictionary<String,String>();

var queryString = context.Request.QueryString;

foreach ( string item in queryString ) {

vhe.Add ( item , CommonFunc.ConvertObjectToString ( queryString[item] ) );

}

return vhe;
对以上C#代码用LinQ To Object 进行Coding
 

LinqToObject

1:

  var query = from item in queryString.OfType<String> ()

              select new KeyValuePair<string , string> ( item , queryString[item] );

  var vhe = new Dictionary<String , String> ();

  foreach ( var item in query ) {
        vhe.Add ( item.Key.ToString () , item.Value.ToString () );
  }
  return vhe;

2:

   return queryString.OfType<String> ()

                     .ToDictionary ( item => item , item => queryString[item] );

 

 

LEFT OUTER JOIN 操作

 

SQL:

 

ContractedBlock.gif ExpandedBlockStart.gif 代码
 
     
SELECT [ t0 ] . [ MemberID ] , [ t0 ] . [ MemberName ]
FROM [ dbo ] . [ MemberInfo ] AS [ t0 ]
LEFT OUTER JOIN [ dbo ] . [ MemberSort ] AS [ t1 ] ON ( [ t1 ] . [ MemberType ] = 0 ) AND
(
[ t0 ] . [ MemberID ] = [ t1 ] . [ MemberID ] )
ORDER BY ( CASE WHEN [ t1 ] . [ SortNumber ] IS NOT NULL THEN [ t1 ] . [ SortNumber ]
ELSE 9999
END )

 


LINQ:

 
   
ContractedBlock.gif ExpandedBlockStart.gif 代码
 
     
var data = from m in db.MemberInfo
join s
in db.MemberSort on m.MemberID equals s.MemberID
into x
from cx
in x.Where(d => d.MemberType == 0 ).DefaultIfEmpty()
orderby cx.SortNumber.HasValue
? cx.SortNumber.Value : 9999
select m;

 

 

Group OrderBy Sum操作

 

SQL:

 

ContractedBlock.gif ExpandedBlockStart.gif 代码
 
     
SELECT [ SID ] , CID, SUM (VisitCount), SUM (ResultCount), SUM (ValidCount)
FROM dbo.CountVisit
WHERE ReportDate BETWEEN ' 2010-03-04 ' AND ' 2010-03-08 ' AND
[ SID ] LIKE ' %m% '
GROUP BY [ sid ] , CID
ORDER BY [ SID ] , CID

 

LINQ:

ContractedBlock.gif ExpandedBlockStart.gif 代码
 
      
var list = new List < CountVisitEntity > ();

using ( var tb = GetCountVisitByParam ( svcp , ref flipPageOption ) ) {

if ( tb.Rows.Count > 0 ) {

var query
= from item in tb.AsEnumerable ()
group item by
new { SID = item.Field < String > ( " SID " ) ,
CID
= item.Field < String > ( " CID " )
} into result
orderby result.Key.SID , result.Key.CID
select
new CountVisitEntity () {
SID
= result.Key.SID ,
CID
= result.Key.CID ,
XX
= result.Sum ( o => o.Field < Int32 > ( " XX " ) ) ,
XXX
= result.Sum ( o => o.Field < Int32 > ( " XXX " ) ) ,
XXXX
= result.Sum ( o => o.Field < Int32 > ( " XXXX " ) )
};
list
= query.ToList ();
}
}

return list;

 


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值