老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)

C#Linq簡介

LInq是Language Integrated Query的簡稱,它是微軟在.net framework 3.5里面新加入的特性,用以簡化查詢查詢操作。它主要包含了3塊,Linq to Object、Linq to SQL、Linq to XML,其中Linq to Object和對于對象的查詢,Linq to XML則又提供了對XML格式數(shù)據(jù)的檢索、設(shè)置等功能,其中值得關(guān)注的Linq to SQL是我們要重點(diǎn)掌握的,因?yàn)樗淖兞宋覀儌鹘y(tǒng)的對于SQL操作的認(rèn)識(shí)。

成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括青河網(wǎng)站建設(shè)、青河網(wǎng)站制作、青河網(wǎng)頁制作以及青河網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,青河網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到青河省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

一、Linq to Object

先上一段代碼:

string[] contries = new string[] { "china", "russia", "american", "spain", "japan", "china" };
var query = from c in contries select c;//Linq to object
IEnumerator enumerator = query.GetEnumerator();
while (enumerator.MoveNext())
{
    Console.WriteLine(enumerator.Current);
}

注意Linq to Object的語法,from c in contries select c ; // 這里的c任意起名,in后面的contries 為數(shù)組對象或者是列表、集合等對象,select c 與前面的c保持一致。這是Linq強(qiáng)大的地方,試想我們以前要想查詢數(shù)組里面的每一個(gè)元素要寫一層for循環(huán)然后循環(huán)輸出。這里似乎看不出什么明顯優(yōu)勢的地方,我們繼續(xù)往下看。

var query = from c in contries select c;
替換為:
var query = from c in contries.Distinct() where c.Length == 5 orderby c ascending select c;

我們會(huì)發(fā)現(xiàn)利用linq可以很容易的像利用sql語句一樣查詢、排序,如果利用原始的技術(shù)可能要多些好幾行代碼!

再舉個(gè)例子。

這是論壇某個(gè)壇友發(fā)的帖子,問如何用Linq進(jìn)行分組查詢。見linq分組統(tǒng)計(jì)。

我在里面給出了解答,當(dāng)然了里面的List完全可以是從數(shù)據(jù)庫中獲取,我簡單模擬了一下,代碼如下。

定義1個(gè)實(shí)體類:

public class Product
{
    public Product(string province, Int32 value)
    {
        this.Province = province;
        this.Value = value;
    }
                                                          
    public string Province { get; set; }
    public Int32 Value { get; set; }
}

然后在Main函數(shù)中輸入:

var result = from p in list.AsEnumerable()
             group p by p.Province into g
             select new
             {
                 g.Key,
                 SumValue = g.Sum(p => p.Value)
             };
result.ToList().ForEach((i) =>
{
    Console.WriteLine(i.Key + ":" + i.SumValue);
});

可以得到分組統(tǒng)計(jì)的結(jié)果。

再附一個(gè)簡單排序的例子。linq排序

二、Linq to SQL

這是Linq技術(shù)的重頭戲,當(dāng)然現(xiàn)在有了EntityFramework等技術(shù),但是我們還是可以關(guān)注一下。

我們新建兩張表,很簡單。

C# Linq簡介

然后在項(xiàng)目中新建一個(gè)Linq to SQL類,切換到設(shè)計(jì)界面。同時(shí)打開服務(wù)資源管理器,添加數(shù)據(jù)連接,連接到數(shù)據(jù)庫。拖動(dòng)classInfo和studentInfo兩張表到Linq to SQL類文件的設(shè)計(jì)界面,我們會(huì)發(fā)現(xiàn)關(guān)系替我們都準(zhǔn)備的好好的。

C# Linq簡介

C# Linq簡介

OK,這時(shí)就可以寫相應(yīng)代碼,進(jìn)行添加操作了。

DataClasses1DataContext datacontext = new DataClasses1DataContext();
classInfo classInfo = new classInfo()
{
    classId = 1,
    className = "grade1"
};
datacontext.classInfo.InsertOnSubmit(classInfo);
                                                 
studentInfo studentInfo = new studentInfo()
{
    studentId = "001",
    studentName = "liming",
    classId = 1
};
                                                 
datacontext.studentInfo.InsertOnSubmit(studentInfo);
                                                 
datacontext.SubmitChanges();

這樣就添加了1條班級(jí)記錄和1條學(xué)生記錄。

如果我們要?jiǎng)h除一條學(xué)生記錄怎么辦?舉個(gè)例子,鍵入如下代碼:

DataClasses1DataContext datacontext = new DataClasses1DataContext();
studentInfo studentInfo = datacontext.studentInfo.Single(c => c.studentName == "liming");
datacontext.studentInfo.DeleteOnSubmit(studentInfo);
datacontext.SubmitChanges();

這樣就把liming這個(gè)學(xué)生記錄給刪除了,很簡單吧?

好,現(xiàn)在我們修改這個(gè)學(xué)生記錄,把名字改成zhang3。

DataClasses1DataContext datacontext = new DataClasses1DataContext();
studentInfo studentInfo = datacontext.studentInfo.Single(c => c.studentName == "liming");
studentInfo.studentName = "zhang3";//直接賦新的值
datacontext.SubmitChanges();//提交更改就可以了

補(bǔ)充一點(diǎn)很重要的,就是如何用linq to sql來進(jìn)行查詢操作。

前面的Single其實(shí)就是一種查詢操作,返回單個(gè)對象。

直接上一個(gè)linq帶條件的分頁查詢實(shí)例:

DataClasses1DataContext datacontext = new DataClasses1DataContext();
                                 
var singleStudent = from s in datacontext.studentInfo
                    where s.studentName != "zhang3"
                    orderby s.classInfo descending
                    select s;
                                 
IList studentList = singleStudent.Skip(pageSize * (pageNumber - 1)).Take(pageSize).ToList();
foreach (studentInfo student in studentList)
{
    Console.WriteLine("studentId:" + student.studentId + "studentName:" + student.studentName);
}

三、Linq to XML

以前我們操作XML一般都用XmlDocument、XmlReader等核心類去處理,關(guān)于這個(gè)我在點(diǎn)擊打開鏈接這個(gè)帖子中已經(jīng)簡單總結(jié)了一把。這里我們看看Linq是怎么處理XML的。

1、創(chuàng)建XML

XElement contacts =
    new XElement("Students",
    new XElement("Student",
        new XElement("Name", "Xiao Ming"),
        new XElement("Phone", "99599",
        new XAttribute("Type", "Home")),
        new XElement("phone", "010-99599",
        new XAttribute("Type", "Work")),
        new XElement("Address",
            new XElement("Street", "123 Street"),
            new XElement("City", "123 City"),
            new XElement("State", "1"),
            new XElement("Postal", "0000000")
        )
    )
);
contacts.Save("test.xml");

你會(huì)發(fā)現(xiàn),你只要記住XElement這一個(gè)核心類就可以使用Linq創(chuàng)建xml,而且編碼的方式很輕松,就是在表達(dá)一個(gè)xml的層級(jí)關(guān)系。

效果如下:



  
    Xiao Ming
    99599
    010-99599
    
123 Street 123 City 1 0000000

2、查詢XML

還是用上面生成的XML來做測試,鍵入如下代碼:

XElement root = XElement.Load("test.xml");
IEnumerable address = from el in root.Elements("Student").Elements("phone")
                      where el.Attribute("Type").Value == "Work"
                      select el;
                   
foreach (XElement el in address)
{
    Console.WriteLine(el.Value);
}

輸出:010-99599。

四、Linq to DataTable

意思跟Linq to Object是一樣的,應(yīng)該屬于Linq to Object的范疇,這里單獨(dú)拿出來,分享一下。

舉個(gè)例子,對兩個(gè)DataTable的數(shù)據(jù)進(jìn)行合并,原貼見:兩個(gè)DataTable合并列。

先構(gòu)造兩個(gè)DataTable。

DataTable A = new DataTable();
A.Columns.Add("NameNumber", typeof(string));
A.Columns.Add("Type", typeof(string));
               
DataRow drA = null;
drA = A.NewRow();
drA["NameNumber"] = "111";
drA["Type"] = "Y";
A.Rows.Add(drA);
               
drA = A.NewRow();
drA["NameNumber"] = "222";
drA["Type"] = "N";
A.Rows.Add(drA);
               
DataTable B = new DataTable();
B.Columns.Add("NameNumber", typeof(string));
B.Columns.Add("Name", typeof(string));
B.Columns.Add("Address", typeof(string));
               
DataRow drB = null;
drB = B.NewRow();
drB["NameNumber"] = "111";
drB["Name"] = "張三";
drB["Address"] = "上海";
B.Rows.Add(drB);
               
drB = B.NewRow();
drB["NameNumber"] = "222";
drB["Name"] = "李四";
drB["Address"] = "北京";
B.Rows.Add(drB);

然后我們通過Linq to DataTable進(jìn)行合并。

var result = from p in A.AsEnumerable()
             from q in B.AsEnumerable()
             where p.Field("NameNumber") == q.Field("NameNumber")
             select new
             {
                 NameNumber = p.Field("NameNumber"),
                 Type = p.Field("Type"),
                 Address = q.Field("Address")
             };
result.ToList().ForEach(x => Console.WriteLine(x.NameNumber + "-" + x.Type + "-" + x.Address));

效果圖下:

C# Linq簡介


網(wǎng)頁名稱:C#Linq簡介
網(wǎng)站地址:http://www.xueling.net.cn/article/ihggsg.html

其他資訊

在線咨詢
服務(wù)熱線
服務(wù)熱線:028-86922220
TOP
主站蜘蛛池模板: 亚洲综合av一区 | 五月天色区 | 亚洲欧美在线x视频 | 少妇扒开腿让我爽了一夜 | 青青视频免费 | 国产女人精品视频国产灰线 | 免费人成激情视频在线观看 | 久久精品免费一区二区 | 在线不卡a资源高清 | 日本天堂网 | 人人干人人舔 | 在线播放免费人成视频网站 | 少妇被粗大的猛烈进出 | 在线观看国产91 | 国产精品传媒视频 | 精品播放一区二区 | 99久久精品一区二区毛片吞精 | 欧美一级视频在线观看 | 国产成人综合在线 | 免费无码国产欧美久久18 | 亚洲中文久久精品无码浏不卡 | 国产国语毛片 | 新婚少妇无套内谢国语播放 | 国产网站色 | 色欲AV永久无码精品无码蜜桃 | 久久久久久性高 | 日韩久久精品网 | 成人免费视频网站 | 成人激情毛片 | 欧美性猛交ⅹxxx乱大交3 | 女高中生边自慰边呻吟 | 日本黄色毛片 | 又硬又粗进去爽a片免费 | 99国内精品久久 | 天天摸夜夜操 | 爱爱视频免费在线观看 | 古代级a毛片可以免费看 | 国产成人精品免费视频大全 | 中文亚洲成A人片在线观看 91精品视频网站 | 成人3dh动漫在线播放网站 | 人摸人人人澡人人超碰手机版 |