LINQ基本语法及其示例Word格式文档下载.docx
- 文档编号:8485771
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:17
- 大小:19.78KB
LINQ基本语法及其示例Word格式文档下载.docx
《LINQ基本语法及其示例Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《LINQ基本语法及其示例Word格式文档下载.docx(17页珍藏版)》请在冰点文库上搜索。
c.FSampleID.Equals(sampleID));
like模糊条件查询:
//使用C#中的Contains关键字代替SQL中的like关键字
q=q.Where(c=>
c.FTaskCode.Contains(condition.Name));
In包含查询:
///<
paramname="
certificateIDs"
>
string[]<
/param>
varcerti=(fromcindb.TMSCertificate
wherecertificateIDs.ToList().Contains(c.FID.ToString())
selectc).ToList();
等价于:
select*fromTMSCertificatewhereFIDin/*certificateIDs*/
Skip和Take实现分页查询:
twi.data=(q.Skip(paging.startIndex).Take(paging.pageSize)).ToList();
//其中startIndex:
跳过的系列中指定的条数
//pageSize:
每页显示条数(记录数)
Distinct方法去除重复:
varp=(fromcindc.TSampleOriginalInfo
wheresampleIDs.Contains(c.FSampleID.ToString())
selectnew
{
c.FFromID,
c.FName
}).Distinct();
查询指定列使new构造集合:
join连接查询:
详见下面的【join查询实例】
//此处省略……
FirstOrDefault查询满足条件的第一条记录或不存在是返回null,不发生异常:
foreach(varfromIDinfromIDs)
varentity=db.TSampleOriginalInfo.FirstOrDefault(c=>
if(entity!
=null)
entities.Add(entity);
}
LINQtoSQL的重要方法:
SubmitChanges方法:
无论您对对象做了多少项更改,都只是在更改内存中的副本。
您并未对数据库中的实际数据做任何更改。
直到您对DataContext显式调用SubmitChanges方法,您所做的更改才会传输到服务器。
db.SubmitChanges();
新增/删除/修改后都需要显式的调用该方法!
以下是几个完整的示例:
///<
summary>
///添加
/summary>
varCustomer"
要添加的对象<
returns>
<
/returns>
publicboolNew(TTrademarkidc)
using(CP_DataClassesDataContextdb=newCP_DataClassesDataContext(GS.MODEL.ConnectionStrings.GetInstance("
if(idc!
db.TTrademark.InsertOnSubmit(idc);
db.SubmitChanges();
returntrue;
else
returnfalse;
///新增多个【使用InsertAllOnSubmit】
model"
publicvoidNew(GS.MODEL.TItemmodel)
List<
GS.MODEL.TItem>
entities=newList<
();
GS.MODEL.TItementity=newGS.MODEL.TItem()
FID=Guid.NewGuid(),
FName=model.FName,
FParentName=model.FParentName,
FFastCode=model.FFastCode,
FRemark=model.FRemark,
FSort=model.FSort
};
db.TItem.InsertAllOnSubmit(entities);
///修改
publicvoidEdit(GS.MODEL.TItemmodel)
using(CP_DataClassesDataContextdb=newCP_DataClassesDataContext(GS.MODEL.ConnectionStrings.GetInstance("
GS.MODEL.TItemitems=db.TItem.Single(c=>
c.FID==model.FID);
items.FName=model.FName;
items.FParentName=model.FParentName;
items.FRemark=model.FRemark;
items.FSort=model.FSort;
items.FFastCode=model.FFastCode;
///删除
IDs"
publicvoidDelete(string[]ids)
foreach(varidinids)
varentity=db.TItem.FirstOrDefault(c=>
c.FID.Equals(id));
db.TItem.DeleteAllOnSubmit(entities);
///【简单查询】获取指定计量标准考核证书下的计量标准器/检定规程/主要配套设备
certifiacteID"
publicIList<
view_CertificateOriginalInfo>
GetViewByCertificateID(GuidcertifiacteID)
using(BPDataContextdb=newBPDataContext(TCTC_ConnectionStrings.connStrJL))
vard=fromcindb.view_CertificateOriginalInfo
wherec.FCertificateID==certifiacteID
returnd.ToList();
///【综合查询】我的待检测结果任务单
paging"
condition"
publicTwiReturnGetMyWorkList(PagingConditionpaging,ConditionModelcondition)
TwiReturntwi=newTwiReturn();
using(BP_DataClassesDataContextdb=newBP_DataClassesDataContext(ConnectionStrings.GetInstance("
varq=fromcindb.view_PrTestList
if(condition!
if(condition.NameSign=="
TaskCode"
&
condition.Name!
="
"
)
q=q.Where(c=>
elseif(condition.NameSign=="
TestItemName"
c.FTestItemName.Contains(condition.Name));
twi.totalCount=q.Count();
if(paging.needPaging)
twi.data=(q.Skip(paging.startIndex).Take(paging.pageSize)).ToList();
twi.data=q.ToList();
returntwi;
///选择计量标准考核证书
sampleIDs"
publicvoidSelectCertificate(string[]sampleIDs,string[]certificateIDs)
BPDataContextbpDC=newBPDataContext(TCTC_ConnectionStrings.connStrJL);
CPDataContextcpDc=newCPDataContext(TCTC_ConnectionStrings.connStrJL);
varcerti=(fromcincpDc.TMSCertificate
TSampleOriginalInfo>
foreach(varsampleIDinsampleIDs)
foreach(varcincerti)
TSampleOriginalInfoentity=newTSampleOriginalInfo()
FFromID=c.FID,
FType=1,
FSampleID=newGuid(sampleID),
FName=c.FCertificateName,
FCode=c.FCode,
FRange=c.FMeasurementRange,
FUncertainty=c.FLevel,
FCertificateNo=c.FCode,//c.FNumber,zjw修改
FValidDateTo=c.FPeriodDate
bpDC.TSampleOriginalInfo.InsertAllOnSubmit(entities);
bpDC.SubmitChanges();
bpDC.Dispose();
cpDc.Dispose();
///获取样品之标准/计量标准器/主要配套设备/检定规程
publicDataTableGetBySampleIDs(List<
string>
sampleIDs)
using(BPDataContextdc=newBPDataContext(TCTC_ConnectionStrings.connStrJL))
varp=(fromcindc.TSampleOriginalInfo
c.FType,
c.FName,
c.FCode,
c.FRange,
c.FModel,
c.FUncertainty,
c.FCertificateNo,
c.FValidDateTo,
c.FManufacturer
returnLinqToDataTable.ToDataTable(p.ToList());
///【join查询实例】获取带检测的器具信息
publicDataTableGetBySampleName(stringsampleName)
varsample=fromcindc.view_Sample_WithVCItem
wherec.FEndTag==1&
c.FTaskEndTag==1&
c.FOutSourcingTag==0&
c.FAssignTag==1&
c.FTestCompleteTag==0&
c.FIsOuter=="
否"
varr=fromsinsample
joinvindc.view_GetSampleLeastOrginalRecord
ons.FIDequalsv.FSampleIDintorecs
fromvinrecs.DefaultIfEmpty()
jointindc.TTask
ons.FTaskIDequalst.FIDintots
fromtints
where(sampleName=="
?
true:
s.FName==sampleName)&
(s.FReceiverID==UserContext.CurrentUser.FID||TCTC_ConnectionStrings.TestResultFilterByTester=="
0"
orderbys.FName,t.FCode,s.FCode
SampleID=s.FID,
SampleCode=s.FCode,
s.FName,
s.FAnotherName,
s.FTaskID,
s.FIsRepair,
s.FIsNeedOriginalRecord,
s.FTestProperty,
s.FRepairTag,
s.VCItemID,
s.CertiID,
s.CertiName,
s.TechID,
s.TechName,
s.TechCode,
s.FReTestTag,
s.FReTestFromTag,
v.FNumber,
v.FFileName,
v.FCertificateNo,
v.FOriginalRecordID,
v.FTag,
TaskCode=t.FCode,
t.FRemark,
t.FIsUrgent,
s.FTaskType,
s.FTaskTypeID,
s.FMeasurementRange,
s.FLevel,
s.FSigPrice
DataTabledt=LinqToDataTable.ToDataTable(r.ToList());
returndt;
LINQ查询返回DataTable类型
在使用LINQ查询的时候,一般我们会返回List<
T>
或IList<
类型,如下所示:
例1:
publicList<
TSample>
GetList()
using(BPDataContextdb=newBPDataContext(TCTC_ConnectionStrings.connStr))
varq=from
pindb.TSample
returnq.ToList();
例1实现的是一个最简单的列表查询,返回的是List<
类型,本身没有任何问题!
但是如果现在希望查询TSample表中的指定几列,代码应该是:
varq=frompindb.TSample
p.FID,
p.FName
returnq.ToList();
现在问题是返回类型该写什么呢?
new{p.FID,p.FName}已经不是TSample类型了,又不支持返回值为List<
的!
可能的解决方案是:
方法一:
先扩展一个类SampleEx
publicclassSampleEx
publicGuidFID
get;
set;
publicstringFName
然后返回List<
SampleEx>
类型
varq=frompindb.TSample
selectnewSampleEx()
FID=p.FID,
FName=p.FName
这样就达到了我们想要的目标。
问题是解决了,但是再仔细想想这样的解决方案似乎可行性不强。
因为在实际开发中我们经常查询两个表join查询,那么重新组合的字段就比较多了,要每个都去扩展单独的类,工作量太大!
有些人可能会想到用试图,然后dbml会自动帮我们生成类,但是这个工作
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LINQ 基本 语法 及其 示例
![提示](https://static.bingdoc.com/images/bang_tan.gif)