[自学笔记]LINQ资料查询技术

LINQ(发音为link 但很多人都说LIN Q/images/emoticon/emoticon01.gif)
最大的特质是具备资料查询的能力以及和 VB、C#语言进行整合的能力,
可同时配合 Entity Framework 来存取 SQL Server 资料来源。

LINQ依使用对象可分为以下几种技术类型:

1. LINQ to Objects

或称为 LINQ to Collection,可以查询实作 IEnumerable 或 IEnumerable介
面的集合物件,如查询阵列、List、集合、档案...等物件。

2. LINQ to AML

使用於 XML 查询技术的 API,透过 LINQ 查询运算式可以不需要再额外学
习 xPath 或 xQuery ,就可以查询或排序 XML文件。

3. LINQ to DataSet

透道 LINQ 查询运算式,可以对记忆体内的 Dataset 或 Data Tble 进行查询。

4. LINQ to SQL

可以对实作 IQueryable介面的物件做查询,也可以直接对 SOL Server 和
SQL Server Express 资料库进行查询与编辑。此功能目前由 Entity Framework
与LINQ to Entity 所取代, ASP.NET MVC 最常使用 Entity Framework 来
当做 Model技术。

LINQ 查询运算式 (Query Expression) 先透过 from 关键字来指定欲查询的资料 集合以及进行资料逐一处理时所需使用的变数名称和型别,类似使用 forcach 回圈 的方式,将集合内查询出来的物件逐一取出并放置到区域变数中进行比对,语法中 可以进一步使用where 条件来过滤资料,然後再使用 orderby 来指定符合条件物件 的排序方式,最後使用 select 子句来指定每次比对後所要得到的查询结果 ,或使用
select new 指定要取得的新物件并且同时指定该物件之属性,最後再将整个LINQ的
查询结果储存到一个指定的变数。LINQ 查询语法如下:

var 变数 = from[资料型别] 范围变数 in 集合
           where <条件>
           orderby 栏位名称1 [ascending|descending][,栏位名称2[...]]
           select new{[别名1=] 栏位名称1 [,[别名2=] 栏位名称2[...] ]};

ex:将阵列 递减排序 及 加总

public class DefaultController : Controller
    {
        // GET: Default
        public string ShowArrayDesc()
        {
            int[] score = new int[] { 78, 99, 20, 100, 66 };
            string show = "";
            //LINQ扩充方法写法
            //使用LINQ的OrderByDescending方法将score阵列进行递减排序
            var result = score.OrderByDescending(m => m);
            //LINQ查询运算式写法(同上面那行用法)
            //将score阵列进行递减排序 并将结果指定给result
            //var result = from m in score
            //             orderby m descending
            //             select m;
            show = "递减排序:";
            foreach (var m in result)
            {
                show += m + ",";

            }
            show += "<br />";
            //使用LINQ的sum方法将score阵列进行加总
            show += "总和:" + result.Sum();
            return show;
        }
    }

显示的结果~
https://ithelp.ithome.com.tw/upload/images/20220508/20135530nUKvgwpGGU.jpg

LINQ方法

撰写 LINQ 查询时可以使用前面所介绍的查询运算式(Query Expression)和方法语法(Fluent Syntax)。
LINQ 方法之语法基本上是以扩充方法和 Lambda 表达式来建立查询。 查询运鼻式与方法语法两者执行结果虽然相同,但大部份的情况使用 LNQ
方法在写法上会比较简洁,若是查询运算式语法过多(例如使用 Join 来进行合并),
则使用方法语法会比较不容易撰写,因此开发人员可视实际倩况来选择 LINQ 查询
运算式或是 LINQ 方法语法。LINQ 方法语法如下:

var 变数 = 集合.LINQ扩充方法(Lamdba运算式)

ex:

var result = score.OrderBy(m => m);

内容参考自:跟着实务学习ASP NET MVC


<<:  资安学习路上-网站常见漏洞与 Injection的爱恨情仇1

>>:  资安学习路上-网站常见漏洞与 Injection的爱恨情仇2

Day1.认识GUI和Tkinter

图形使用者介面(Graphical User Interface,GUI) 指透过点击图示执行隐含的...

[DAY05] 在 Azure Machine Learning 上建立运算资源

DAY05 在 Azure Machine Learning 上建立运算资源 前几天我们已经建立好了...

好用进销存系统EZTOOL

我们是一间批发机械进口商,开业时间约2年,一直以来就只有一位行政人员。近期实在认为需要软件来管理公司...

Backtrader - sizer

以下内容皆参考 Backtrader 官网 之前有介绍过,如果我们下单除了股价以外,还有一个很重要的...

Day1. 请Matter.js同学自我介绍一下

嗨,虽然说第一篇的目的是简单了解一下Matter.js,但在那之前我要偷渡一下自我介绍XD 这是笔者...