单表查询: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; }