C# Linq查询、where 扩展查询以及QueryExpression分页查询

发布于:2023-01-21 ⋅ 阅读:(440) ⋅ 点赞:(0)

 单表查询:var cod_entity = service.Retrieve(ssss_codcase.EntityLogicalName, sd.ssss_sso_no.Id, new ColumnSet(true)).ToEntity<ssss_codcase>();

linq查询

语法:     

//多表查询

var record = (from _record in orgService.CreateQuery<表1>()
           join _date in orgService.CreateQuery<表2> ()
           on _record.Id equals _date..Id                     //连接条件
           where  语句                                       //where过滤条件(可省略)
           select _record).ToList();   

where扩展查询(单表)

语法:w=>连接条件,可后接过滤条件

var sampling_list = orgService.CreateQuery<表名>().Where(w => w.ssss_sso_no == entity.ssss_sso_case_no).ToList();

QueryExpression分页查询(推荐、不占内存)

QueryExpression q = new QueryExpression("account");
q.ColumnSet = new ColumnSet(true);//要查詢的主表字段, true 代表全部,也可以逐個錄入字段
q.Criteria.AddCondition("name", ConditionOperator.NotNull);
 
//聯表查詢
LinkEntity linkToContact = new LinkEntity();
linkToContact.LinkFromEntityName = Account.EntityLogicalName;//主表
linkToContact.LinkFromAttributeName = "accountid";
linkToContact.LinkToEntityName = Contact.EntityLogicalName;//子表
linkToContact.LinkToAttributeName = "cus_account_no";
linkToContact.Columns = new ColumnSet("cus_remark");//要查詢的子表字段
//寫法2
//linkToContact .Columns.AddColumn("cus_remark");
linkToContact.EntityAlias = "temp";//給子表設置別名
linkToContact.LinkCriteria.AddCondition("statecode", ConditionOperator.Equal, 0);
linkToContact.JoinOperator = JoinOperator.Inner;
//也可添加排序,低版本sdk可能無法使用
linkToContact.Orders.Add(new OrderExpression("cus_record_no", OrderType.Descending));

//分頁設置
PagingInfo pageInfo= new PagingInfo();
pageInfo.Count = 5000;//最大值每頁5000條記錄
pageInfo.PageNumber = 1;
pageInfo.PagingCookie = null;

q.PageInfo = pageInfo;
while (true)
{
    var resultList = service.RetrieveMultiple(q);
    foreach (var item in resultList.Entities)
    {
       //do something
       //讀取主表數據
       string donorNo = item["cus_donor_no"].ToString();
       //讀取子表數據
       string remark = ((AliasedValue)item["temp.cus_remark"]).Value.ToString();
    }

   if (resultList.MoreRecords)//如果後續還存在記錄,則查詢下一頁,否則結束查詢
   {
       q.PageInfo.PageNumber++;
       q.PageInfo.PagingCookie = resultList.PagingCookie;
    }
    else
       break;
 }

网站公告

今日签到

点亮在社区的每一天
去签到