LINQ&EF任我行(二)--LinQ to Object

LINQ&EF任我行LinQ to Object 阅读详情
LinQ to Objects是LinQ家庭的核心,其它的LinQ也使用了与LinQ to Objects相同的查询句法。最终编译器都是把LinQ句法翻译成扩展方法的链式表达式,同时把扩展方法中的lambda表达式转换成匿名类中的匿名方法,然后再把查询表达式编译成MSIL。
LinQ to SQL、LinQ to DataSets、LinQ to Entities和LinQ to XML则不是把查询表达式转换成MSIL,而是把查询表达式树转换成相应的特定查询语言。LinQ to SQL会生成T-SQL,LinQ to Entities会生成eSQL,LinQ to XML会生成XPath语句等。

LinQ标准查询操作符列表

《图1》

在VS2008及以后的版本中提供了LinQ的查询样例程序。
\Programe Files\Microsoft Visual Studio 2008(10.0 VS2010)\Samples\1033文件夹下有个压缩包CSharpSamples.zip,解压它,继续打开其中的文件夹
.\LinqSamples\SampleQueries\SampleQueries.sln,打开此解决方案,运行该项目,界面如下

《图2》
在左边选择示例,右侧上方会出现相应的LinQ代码,右侧下方会出现代码的运行结果。通过这个样例程序,我们可以学习LinQ的各种用法。

下面我们来学习LinQ常用操作符

一、筛选操作符Where
根据谓词对源序列的内容进行筛选,类似于SQL中的where子句。

1.简单where表达式
使用扩展方法
var query1 = CustomerList.Where(c => c.Country == “USA”);
使用查询表达式语法
query1 = from c in CustomerList where c.Country == “USA” select c;
使用扩展方法需要向where方法中传入lambda表达式。

2.复合where表达式
所谓的复合where表达式就是使用&&或||操作符对数据进行筛选
使用扩展方法
var query2 = CustomerList.Where(c => c.Country == “USA” &&   c.Orders.Any());
使用查询表达式语法
query2 = from c in CustomerList where c.Country == “USA” &&   c.Orders.Any() select c;

Any()方法相当于Count()>0,如果集合中有元素就返回true。

3.使用Index参数和IndexOf()方法
index值代表的是集合中元素的索引号,在where()中使用index可以控制返回与指定索引号相关的集合数据。泛是返回IEnumerable<T>类型的查询操作都可以使用index。
使用扩展方法
var query3 = CustomerList.Where((c, index) => c.Country == “USA” &&   index   > 70);//返回国家是USA,索引号大于70的元素集合。
这里lambda表达式中接收的参数是(c,index),索引号做为第二个参数传入。

也可以使用IndexOf()方法来实现上面的功能,如果使用IndexOf()的话,那lambda表达式中传入的参数只需要一个就可以了。
使用扩展方法
var query3 = CustomerList.Where(c => c.Country == “USA” && CustomerList.IndexOf(c) > 70);
使用查询表达式语法
query3 = from cust in CustomerList where cust.Country == “USA”&& CustomerList.IndexOf(cust) > 70 select cust;

二、投影运算符
投影运算符对应SQL中的“select 列名”子句

(一)Select
Select操作符是从序列源返回一组指定属性
使用扩展方法
var infos = context.Infos.Where(p => p.Sex == true).Select(p => new { p.Name,p.Sex});
foreach (var c in infos)
{
    Console.WriteLine(c.Name + c.Sex);
}
使用查询表达式语法
var infos = from p in context.Infos where p.Sex == true select new { p.Name, p.Sex };
foreach (var c in infos)
{
    Console.WriteLine(c.Name + c.Sex);
}
如果使用扩展方法则在Select()方法中使用lambda表达式p=>new {p.Name,p.Sex}来对列进行投影;如果使用查询表达式语法的话,直接在select关键字后使用匿名类new { p.Name, p.Sex }即可。

二)SelectMany
SelectMany操作符实际上实现的是相关数据的交叉连接操作。它根据lambda表达式从一对多的序列中返回指定的属性。
比如:

《图3》
查询男员工的所有家庭成员:
使用扩展方法

var q = context.Infos.Where(p => p.Sex == true).SelectMany(f=>f.Families);
foreach (var n in q)
{
    Console.WriteLine(n.Name);
}

使用查询表达式语法

var q = from p in context.Infos where p.Sex==true from f in p.Families select f;
foreach (var n in q)
{
    Console.WriteLine(n.Name);
}

三、分块操作符
(一)Skip和Take
Skip是从序列中跳过元素的个数;Take是从序列中获取元素的个数;
如:跳过集合的前2个元素,从第三个元素开始向后取4个元素。
使用扩展方法
var q = list.Skip(2).Take(4);
使用查询表达式语法
var q = (from p in list select p).Skip(2).Take(4);

(二)SkipWhile和TakeWhile
SkipWhile:条件跳过,从序列第一个元素开始依次判断,一直跳到不满足条件的元素为止,返回此元素及此元素之后的序列 ;
TakeWhile:条件抓取,从序列第一个元素开始依次判断,只要满足条件就进行下个元素判断,直到不满足条件的元素为止,返回此元素之前的序列 ;
如:取集合中第一批“性别”是“男”的元素的集合。
使用扩展方法
var q = list.SkipWhile(p => p.Sex == false).TakeWhile(p => p.Sex == true);
使用查询表达式语法
var q = (from p in list select p).SkipWhile(p => p.Sex == false).TakeWhile(p => p.Sex == true);

四、连接运算符
Join和GroupJoin操作符是把两个相互独立的对象通过关键属性关联起来。
这种对象与对象的关联与SQL中的Join关联语法上有些不同。
1.LinQ的Join不支持SQL-92中的一些比较运算符,如>、<、<>等。它只支持相等运算符
2.在On子句中不能使用=来实现两个对象之间的关联,需要使用Equals运算符。
(一)Join
使用扩展方法

var list = infos.Join(works, p => p.Code, w => w.InfoCode, (p, w) => new { p.Name, w.Firm, w.Depart });
使用查询表达式语法

var list = from p in infos join w in works on p.Code equals w.InfoCode select new { p.Name, w.Firm, w.Depart };
(二)GroupJoin
可以实现外联效果

Join扩展方法与GroupJoin扩展方法签名有些不一样



《图4》



《图5》
在C#3.0查询表达式语法中没有GroupJoin语法,可以使用Join...into...来实现,它与Join不同的是,它可以实现类似于SQL外联接的效果,而Join只实现类似于SQL内联的效果。
使用查询表达式语法

var list = from p in infos join w in works on p.Code equals w.InfoCode into bo from r in bo.DefaultIfEmpty() 
select new { p.Name, r};

六、排序运算符
排序运算符一共包含五个运算符OrderBy、OrderByDescending、ThenBy、ThenByDescending和Reverse
OrderBy:升序排序
OrderByDescending:降序排序
ThenBy:在OrderBy或OrderByDescending后实现多级排序中实现升序排序
ThenByDescending:在OrderBy或OrderByDescending后实现多级排序中实现降序排序
Reverse:顺序倒转

如:对所有人员先按照性别升序排序,再按照生日降序排序
使用扩展方法:

var q = infos.OrderBy(p => p.Sex).ThenByDescending(p => p.Birthday);

使用查询表达式语法:

var q = from p in infos orderby p.Sex,p.Birthday descending select p;

在查询表达式语法中实现多级排序类似于T-Sql中的方式。

七、分组操作符
分组操作符GroupBy用来按照元素的某个属性来对序列中的元素进行分组。类似于SQL中的group by 子句,但它是对象的序列,还可以获取每组中的每个元素对象。
如:按照性别对人员进行分组,并显示每组中人员的信息
使用扩展方法:

var q = infos.GroupBy(p=>p.Sex);

使用查询表达式语法:

var q = from m in infos group m by m.Sex into g select g;

显示分组数据:

foreach (var item in q)
{
    //item.Key代表分组后的关键字的值,在这里是性别Sex的值
    Console.WriteLine("性别为"+item.Key+"\t共有"+item.Count()+"人");
    foreach (var c in item)
    {
            Console.WriteLine("\t" + c.Name + "\t" + c.Sex);
    }
    Console.WriteLine("*********************");
}


《图6》

八、集合操作符
集合操作符包括Distinct、Union、Intersect和Except,除了Distinct之外其余的三个是用来把两个集合拼合成一个集合。
(一)Distinct
Distinct操作符用来把序列中重复的值移除掉,类似于SQL中的Distinct
如:查看Infos集合中所有
使用扩展方法:

var q = infos.Select(p => p.Nation).Distinct();

使用查询表达式语法:

var q = (from p in infos select p.Nation).Distinct();

(二)Union
Union操作符取两个具有相同结构的集合并集,如果两集合中有相同元素,则会自动滤去重复内容。而前面所讲的Concat操作符只是将两个集合进行合并,并不过滤重复元素。
如:两个集合,其中temp是infos的子集。

var infos = from p in context.Infos.ToList() select p;
var temp = infos.Where(p => p.Sex == true);

使用扩展方法:

var q = infos.Union(temp);

使用查询表达式语法:

var q = (from p in infos select p).Union(from m in temp select m);

运行结果中,子集的内容并没有重复出现

(三)Intersect
Intersect操作符是取两个具有相同结构的集合的交集部份。
如:两个集合,其中temp是infos的子集。

var infos = from p in context.Infos.ToList() select p;
var temp = infos.Where(p => p.Sex == true);

使用扩展方法:

var q = infos.Intersect(temp);

使用查询表达式语法:

var q = (from p in infos select p).Intersect(from m in temp select m);

运行结果中只显示子集中的内容。

(四)Except
Except操作符是从一个集合中取另一个集合的差集,即从集合A中取出集合B中不包含的元素。
如:两个集合,infos和temp,temp集合中包含了infos集合中不存在的元素

var infos = from p in context.Infos.ToList() select p;
var temp = infos.Where(p => p.Sex == true).ToList();
temp.Add(new Info
{
    Code = "p100",
    Name = "哈哈",
    Sex = false,
    Nation = "n004",
    Birthday = DateTime.Now
});

使用扩展方法:

var q = infos.Except(temp);

使用查询表达式语法:

var q = (from p in infos select p).Except(from m in temp select m);

九、转换操作符,用来改变集合的类型
(一)ToArray
把集合转换为数组形式,不延迟
使用扩展方法:

Info[] g = infos.ToArray();

使用查询表达式语法:

Info[] g = (from p in infos select p).ToArray();

(二)ToList
把集合转换为泛型集合形式,不延迟
使用扩展方法:

List<Info> g = infos.ToList();

使用查询表达式语法:

List<Info> g = (from p in infos select p).ToList();

(三)ToDictionary
把集合转换成Dictionary<TKey,TElement>类型的集合,它每个元素的value值是原集合中的一个元素对象。
如:下面的代码把集合的内容转换为一个字典集合,字典的key值是人员代号,字典的value值是info元素对象。
使用扩展方法:

var q = infos.ToDictionary(p=>p.Code);

使用查询表达式语法:

var q = (from p in infos select p).ToDictionary(p=>p.Code);

调用语法

foreach (var item in q)
{
    Console.WriteLine(item.Key+item.Value.Name);
}

从运行结果中我们可以看出,字典的第二个参数就是原集合中的元素。

(四)ToLookup
把集合转换成ILookup<TKey,TElement>类型的集合,ILookup<TKey,TElement>集合与Dictionary<TKey,TElement>集合不同的是:Dictionary<TKey,TElement>中Key和Value值一一对应,而ILookup<TKey,TElement>集合中Key和Value值是一对多的对应关系。
如:使用ILookup<TKey,TElement>把集合中的元素分组显示
使用扩展方法:

var q = infos.ToLookup(p=>p.Nation);

使用查询表达式语法:

var q = (from p in infos select p).ToLookup(p => p.Nation);

显示数据的代码:

foreach (var item in q)
{
    Console.WriteLine(item.Key);
    foreach (var single in item)
    {
        Console.WriteLine("\t" + single.Name);
    }
}

显示效果:


《图7》
十、相等操作符:SequenceEqual
用来对两个序列进行对比。如果所有元素的值相等,并且元素个数相等,并且元素的次序相等,那SequenceEqual操作符返回的是True,否则返回False

var s1 = infos.OrderBy(p => p.Code);
var s2 = infos.OrderByDescending(p=>p.Code);
var s3 = infos.OrderBy(p => p.Code);
Console.WriteLine(s1.SequenceEqual(s2)); //结果是False
Console.WriteLine(s1.SequenceEqual(s3)); //结果是True

十一、元素操作符:
元素操作符的作用是从IEnumerable<T>集合序列中返回一个指定的元素。
如果没有找到指定的元素,所有的XXXDefault操作符返回空对象,并不会产生异常。而First、Last、Single和ElementAt操作符则会产生异常。

(一)First和FirstOrDefault
如果序列中包含一个或多个元素,这两个操作符返回序列中的第一个元素。如果序列不包含任何元素,则FirstOrDefault操作符返回null值(引用类型)或默认值(值类型),而First操作符则产生异常信息。
如:查找第一个女生
使用扩展方法:

var item = infos.First(p=>p.Sex == false);
var item = infos.Where(p => p.Sex == false).First();

使用查询表达式语法:

var item = (from p in infos where p.Sex == false select p).First();

(二)Last和LastOrdefault
如果序列中包含一个或多个元素,这两个操作符返回序列中的最后一个元素。如果序列不包含任何元素,则LastOrDefault操作符返回null值(引用类型)或默认值(值类型),而Last操作符则产生异常信息。
如:查找最后一个女生
使用扩展方法:

var item = infos.Last(p=>p.Sex == false);
var item = infos.Where(p => p.Sex == false).Last();

使用查询表达式语法:

var item = (from p in infos where p.Sex == false select p).Last();

三)Single和SingleOrDefault
如果序列中有且只有一个元素,则这两个操作符返回该元素
如果序列中没有任何元素,则Single会产生异常,而SingleOrDefault则会返回null值(引用类型)或默认值(值类型)
如果序列中包含多个元素,则这两个操作符都会产生异常。

(四)ElementAt和ElementAtOrDefault
这两个操作符是根据索引号从序列中返回指定的元素,如果未找到元素ElementAt()会产生异常,而ElementAtOrDefault()则会返回默认实例。
如:取出集合中的第二个女生
使用扩展方法:

var item = infos.Where(p=>p.Sex == false).ElementAt(2);

使用查询表达式语法:

var item = (from p in infos where p.Sex == false select p).ElementAt(2);

十二、元素数量操作符
判断序列中元素是否满足指定的条件返回bool型的值。带有该操作符的话句不能实现延迟查询,语句会被立即执行。
(一)Any
如果序列中存在任一个满足条件的元素,就返回true
如:判断是否存在代号为P005的人员
使用扩展方法:

var q = infos.Any(p=>p.Code == "p005");
var q = infos.Where(p => p.Code == "p005").Any();

使用查询表达式语法:

var q = (from p in infos where p.Code == "p005").Any();

(二)All
如果序列中所有元素都满足条件,就返回true
如:判断是否所有员工都是汉族
使用扩展方法:

var q = infos.All(p => p.Nation == "汉族");

使用查询表达式语法:

var q = (from p in infos select p).All(p=>p.Nation == "汉族");

(三)Contains
判断集合中是否包含指定的元素

十三、聚合操作符
聚合操作符类似于SQL中的聚合函数,所有带有聚合操作符的LinQ语句都无延迟功能,会被立即被执行。

(一)Count
取得序列中满足条件的元素的个数
使用扩展方法:

var q = infos.Count(p => p.Sex == false);
var q = infos.Where(p => p.Sex == false).Count();

使用查询表达式语法:

var q = (from p in infos where p.Sex==false select p).Count();

(二)Min、Max、Sum和Average
分别是取得序列中所有元素中某属性的最小值、最大值、总和、平均值等。

decimal? minFreightCharge = OrderList.Min(c => c.Freight);
decimal? maxFreightCharge = OrderList.Max(c => c.Freight);
decimal? sumFreightCharge = OrderList.Sum(c => c.Freight);
decimal? avgFreightCharge = OrderList.Average(c => c.Freight);

总结:
这一篇文章主要介绍了LinQ的标准查询操作符(SQO)。对每个操作符都介绍了使用扩展方法的使用和查询表达式的使用,对于这两种用法大家应当都掌握住,尤其要记住扩展方法的使用。
由于时间的原因没有对每个示例的运行结果抓图显示,朋友们可以自己测试一下结果。
上面的内容是LinQ to Object的基础语法,也是其它LinQ的基础,熟练使用这些操作符能够使我们在LinQ天地中自由驰骋。





 















 

 

 

Rockchip rv1126平台在gstreamer1中添加OpenCv实现视频流负片的效果 rv1126 gstreamer opencv negetive effect 阅读详情

相关推荐

不只是CPU主频:深入解析英飞凌Aurix TC3xx各外设时钟树(CAN、以太网、Flash时序如何配置)

本文深入解析英飞凌Aurix TC3xx系列微控制器的外设时钟树配置,涵盖CAN、以太网和Flash时序的优化方法。通过详细分析时钟系统架构、关键外设配置及多外设协同设计策略,帮助工程师实现高性能汽车电子控制单元(ECU)开发。特别关注系统时钟的灵活配置与EMC优化技巧,提升系统实时性和可靠性。

weixin_29189373的博客 401

LinQ 总结

(原创:灰灰虫的家http://hi.baidu.com/grayworm)LinQ to Objects是LinQ家庭的核心,其它的LinQ也使用了与LinQ to Objects相同的查询句法。最终编译器都是把LinQ句法翻译成扩展方法的链式表达式,同时把扩展方法中的lambda表达式转换成匿名类中的匿名方法,然后再把查询表达式编译成MSIL。LinQ to SQL、LinQ to Dat

canduecho的专栏 936

Moltemplate建模----水盒子data文件

1功能介绍 Moltemplate是LAMMPS官方支持的建模工具之一,适用于LAMMPS建模。该程序创建了一种简单的文件格式来存储分子定义和力场,即模板LT。LT文件包含与特定分子有关的所有文本(包括坐标,键拓扑,角度,力场参数,约束,组和修复)。 Moltemplate可以复制分子,对其进行自定义,然后用它作为构建更大、更复杂分子的基础。构建后,可以自定义...

元素魔方科研服务 2596

第13章 LINQ to Object

第13章 LINQ to Object 在第12章,我们学习了很多C#3的新特性,包括匿名类型、扩展方法、隐式类型等,而这些新特性都是为LNQ服务的。 LINQ to Object将查询语句转换为委托。实际上, LINQ to Object并没有什么全新的东西,它只不过是把之前的语法特性有机地结合了起来,并以我们可以想到的、最易懂、最精简的方式呈现给了开发者。本章将介绍 LINQ to Objec...

yanghuag的博客 821

Manus通用AI智能体完全使用指南(2025最新版)——从注册到高阶技巧全解析

Manus通用AI智能体完全使用指南(2025最新版)——从注册到高阶技巧全解析

m0_69718028的博客 8117

别再只看图了!代谢组学OPLS-DA分析,R2Y和Q2Y到底怎么看才不踩坑?

本文深入解析代谢组学OPLS-DA分析中的关键指标R2Y和Q2Y,揭示如何避免过拟合陷阱。通过详细解读模型解释能力(R2Y)和预测能力(Q2Y),结合置换检验方法,提供完整的模型评估流程与实战建议,帮助研究者获得可靠的分析结果。

weixin_42638178的博客 196

LINQ to Objects(用于集合、文件、字符串对象的LINQ)

LINQ to  Object是LINQ的基础,而LINQ to SQL、LINQ to  XML是中间LINQ提供程序,它们主要把数据源转换成LINQ to Objects兼容的类型,以便与LINQ to Objects进行操作。LINQ to Objcets就是直接 对IEnumerable或IEnumberable集合使用LINQ查询。LINQ标准查询运算符概述LINQ标准查询运算符是依靠一组扩展方法来实现的。而这些扩展方法分别是System.Linq.Enumerable和System.Linq.Q

游戏全栈,技术合作 3452

SQL Prompt 9.0插件突然无法使用解决办法(附防联网激活)多图+文字

可能由于Redgate公司最近抓盗版抓得严,导致激活后的SQL Prompt联网后突然无法使用,无论卸载重装都没办法继续使用,本人同时使用SQL Assistant和SQL Prompt,我喜欢SQL Assistant代码提示功能,而SQL Prompt我喜欢将查询结果复制后可以直接生产插入脚本,这是最爽的一件事,即便对表有多么熟悉,没有这些插件,几行语法都要敲大半天,目前本人已经离不开这两个插...

骚团长的博客 1万+

Linq入门详解(Linq to Objects)

Linq之旅:Linq入门详解(Linq to Objects)   示例代码下载:Linq之旅:Linq入门详解(Linq to Objects)          本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集成查询)。通过LINQ,我们可以使用相同API操作不同的数据源。接下来就让我们看看LINQ是什么

xuyongbeijing2008的专栏 1455

把慢点掰开看:在 SAP HANA 中启用 SQL 优化耗时跟踪 SqlOptTime 的实战指南

摘要:SAP HANA 性能排查中,常出现SQL查询时快时慢的现象,表面看似执行问题,实则是编译阶段耗时过长。通过SQL优化跟踪工具SqlOptStep和SqlOptTime,可精准区分编译与执行时间。SqlOptStep展示优化树变化过程,而SqlOptTime则记录各阶段耗时,帮助定位问题根源。启用SqlOptTime需配置traceprofile,建议限定特定用户以减少系统负载。实际案例显示,报表响应慢常由计算视图编译(CeQo)导致,而非执行阶段问题。解决方案包括调整计算视图展开方式或优化基础视图结

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1009

silero-vad 训练自己的数据

silero-vad 训练自己的数据

jacke121的专栏 816

Linq to object的基本用法

Enumable类型是linq to object 是一个很特殊的类型 这个类型的数据源都是在程序的内存中 Queryable类型是 Linq to sql 对数据库进行操作都是这个类型 这个类型会生成表达式目录树 方法体只能有一行代码 下面通过案例来理解 项目目录 // 创建数据源 Linq to object var stars = new List<Stars>() { new Stars(

weixin_45763353的博客 588

halcon3d点云补全方法

属于halcon实例中的内容,后面还接了一部分的匹配

Tianwen_running的博客 1231

LINQ&EF任我行(二)--LinQ to Object (转)

(原创:灰灰虫的家http://hi.baidu.com/grayworm)LinQ to Objects是LinQ家庭的核心,其它的LinQ也使用了与LinQ to Objects相同的查询句法。最终编译器都是把LinQ句法翻译成扩展方法的链式表达式,同时把扩展方法中的lambda表达式转换成匿名类中的匿名方法,然后再把查询表达式编译成MSIL。LinQ to SQL、LinQ to DataS...

weixin_30517001的博客 182

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

LINQ&EF任我行(二)--LinQ to Object (转)

LINQ&EF任我行(二)--LinQ to Object (转) (原创:灰灰虫的家http://hi.baidu.com/grayworm) LinQ to Objects是LinQ家庭的核心,其它的LinQ也使用了与LinQ to Objects相同的查询句法。最终编译

东方匠心的专栏 920

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

LinQ&EF任我行(三)--LinQ to SQL (转)

(原创:灰灰虫的家http://hi.baidu.com/grayworm) LinQ to SQL可以用来取代传统的基于SQL语句的查询操作。在以后的数据访问层(DAL)中,我们可以使用LinQ to SQL实现数据库的CRUD操作,在执行的时候.net框架会把LinQ to SQL查询表达式转换成对应的SQL语句再去执行。使用LinQ to SQL可以借助于LinQ语法大大简化我们数据访问的

ranshouxu的专栏 1756

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

LinQ&EF任我行(一)--LinQ to SQL (转)

(原创:灰灰虫的家http://hi.baidu.com/grayworm) LinQ家族五大成员:LinQ to Objects - 默认功能,用来实现对内存中集合对象的查询LinQ to SQL - 针对SQL Server的查询,它是一个带有可视化的操作界面的ORM工具LinQ to DataSet - 对强类型化或弱类型化的DataSet或独立的DataTable进行查询LinQ to ...

weixin_33725722的博客 362
上一篇: LINQ&EF任我行(一)--C#3.0与LinQ
下一篇: LinQ&EF任我行(三)--LinQ to SQL
writtyflame
博客等级 码龄17年 6粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值