最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#使用LINQ查詢表達式的基本子句總結(jié)

 更新時間:2016年03月07日 15:49:16   作者:DebugLZQ  
這篇文章主要介紹了C#使用LINQ查詢表達式的基本子句總結(jié),在C#程序中我們可以使用LINQ基本查詢表達式模式來查詢和轉(zhuǎn)換SQL數(shù)據(jù)庫、ADO.NET數(shù)據(jù)集、XML文檔和流以及.NET集合中的數(shù)據(jù),需要的朋友可以參考下

LINQ查詢表達式的基本語法很容易掌握,它使用C#常見的語言構(gòu)造,從外觀上看,和我們常用的SQL類似,并且查詢表達式中的變量可以用匿名類型,所以在很多情況下,不需要指定變量類型就可以構(gòu)建LINQ表達式。

LINQ的數(shù)據(jù)源可以是數(shù)據(jù)庫對象或是XML流等,也可以使實現(xiàn)了IEnumerable或者泛型IEnumberable<T>接口的集合對象。

LINQ的基本語法包含如下的8個上下文關(guān)鍵字,這些關(guān)鍵字和具體的說明如下:

關(guān)鍵字
說明
from 指定范圍變量和數(shù)據(jù)源
where 根據(jù)bool表達式從數(shù)據(jù)源中篩選數(shù)據(jù)
select 指定查詢結(jié)果中的元素所具有的類型或表現(xiàn)形式
group 對查詢結(jié)果按照鍵值進行分組(IGrouping<TKey,TElement>)
into 提供一個標(biāo)識符,它可以充當(dāng)對join、group或select子句結(jié)果的引用
orderby 對查詢出的元素進行排序(ascending/descending)
join 按照兩個指定匹配條件來Equals連接兩個數(shù)據(jù)源
let 產(chǎn)生一個用于存儲查詢表達式中的子表達式查詢結(jié)果的范圍變量

下面依此總結(jié)這8個關(guān)鍵字的常用查詢語句寫法。

1.from子句
如果要寫一個LINQ表達式,就必須是以from子句開頭。個人覺得from子句中需要注意的地方就是多個from子句的書寫。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace LINQ
{
  /// <summary>
  /// LINQ,重點是感悟from子句中的查詢變量的靈活
  /// </summary>
  class Program
  {
    static void Main(string[] args)
    {
      //1單個form子句
      string[] values = { "LINQ學(xué)習(xí)","LINQ基本語句","from子句","單個from子句"};
      var value = from v in values
            where v.IndexOf("LINQ") > -1
            select new { v, v.Length };
      foreach (var n in value)
      {
        Console.WriteLine("{0},{1}",n.v,n.Length );
      }
      Console.ReadKey(false);
      //2使用LINQ查詢ArrayList
      ArrayList gList = new ArrayList();
      gList.Add(new GustInfo { Name="DebugLZQ", Age=26, Tel="88888888"});
      gList.Add(new GustInfo { Name="博客園",Age=6, Tel ="666666"});
      gList.Add(new GustInfo { Name = "M&MSoft", Age =9, Tel = "55555" });

      var query = from GustInfo gust in gList
            where gust.Age > 9
            select gust;//范圍變量gust制定了數(shù)據(jù)類型
      foreach (GustInfo g in query)
      {
        Console.WriteLine("{0} 年齡:{1} 電話:{2}",g.Name,g.Age,g.Tel );
      }
      Console.ReadKey(false);
      //3復(fù)合from子句
      List<GustInfo2> gList2 = new List<GustInfo2>() 
      {
        new GustInfo2{ Name="DebugLZQ",Age=26,TelTable=new List<string>(){"8888888","138******"}},
        new GustInfo2{ Name="博客園",Age=6,TelTable =new List<string>(){"666666","138******"}},
        new GustInfo2{ Name="M&MSoft",Age=9,TelTable=new List<string>(){"55555","138******"}}
      };

      //gust、tel都是查詢變量,作用域為當(dāng)前查詢語句?。?!
      var query2 = from gust in gList2
             from tel in gust.TelTable 
             where tel.IndexOf("5555") > -1
             select gust;
      foreach (var g in query2)
      {
        Console.WriteLine("{0} 年齡{1}",g.Name,g.Age );
        foreach (var t in g.TelTable)
        {
          Console.WriteLine("電話:{0}",t);
        }
      }

      Console.ReadKey(false);

      //4多個from子句
      var query3 = from GustInfo gust in gList
             where gust.Age > 6
             from GustInfo2 gust2 in gList2
             where gust2.Age> 9
             select new { gust, gust2 };//查詢結(jié)果定制
      foreach (var g in query3)
      {
        Console.WriteLine("{0} {1}", g.gust.Name, g.gust2.Name);
      }

      Console.ReadKey(false);
    }
  }
}

程序的運行結(jié)果如下:

201637153703558.png (677×442)

程序中列舉了from子句的用法示例,注意復(fù)合from子句和多個from子句的書寫,同時需要理解范圍變量和數(shù)據(jù)源變量這兩個概念。

 2.where子句
where子句,它是LINQ表達式的元素篩選機制,除了開始和結(jié)束的位置,它幾乎可以出現(xiàn)在LINQ表達式的任意位置上。

在一個LINQ表達式中,可以有where子句,也可以沒有;可以有一個,也可以有多個;多個where子句之間的邏輯關(guān)系相當(dāng)于邏輯“與”,每個where子句可以包含1個或多個bool邏輯表達式,這些條件成為謂詞,謂詞邏輯之間用的是“&&”“||”等而不是SQL中的and 、or。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LINQ_WHERE
{
  /// <summary>
  /// LINQ where子句
  /// </summary>
  class Program
  {
    static void Main(string[] args)
    {
      //1常見的where語句
      List<GustInfo> gList = new List<GustInfo>() 
      {
        new GustInfo(){ Name="DebugLZQ", Age=26,Tel="88888888"},
        new GustInfo(){ Name="cnblogs",Age=6,Tel="666666"},
        new GustInfo(){ Name="M&MSoft",Age=9,Tel="55555"}
      };

      var query = from gust in gList
            where (gust.Name.Length > 7 || gust.Name.Substring(0, 1) == "M") && gust.Age > 9
            select new { gust.Name, gust.Age };
      foreach (var g in query)
      {
        Console.WriteLine("{0},{1}", g.Name, g.Age);
      }

      Console.ReadKey(false);

      //2.在where子句中使用自定義函數(shù)
      var query2 = from GustInfo gust in gList
             where gust.Name.Length > 5
             && Check(gust.Name)
             select gust;
      foreach (var g in query2)
      {
        Console.WriteLine("{0},{1},{2}", g.Name, g.Age, g.Tel);
      }
      Console.ReadKey(false);

      //3.動態(tài)謂詞的篩選
      //定義動態(tài)謂詞數(shù)組,在實際開發(fā)中可以動態(tài)獲得
      string[] names = { "SB","XXX","***","@@@","一些敏感詞"};

      var query3 = from GustInfo guest in gList
             where !names.Contains(guest.Name)
             select guest;

      foreach (var q in query3)
      {
        Console.WriteLine("{0} 年齡:{1},電話:{2}",q.Name,q.Age,q.Tel );
      }
      Console.ReadKey(false);
    }

    //自定義函數(shù)
    static bool Check(string name)
    {
      if (name.Substring(0, 1) == "N")
        return false;
      return true;
    }
  }
}

需要注意一些常用的where子句的寫法。程序的運行結(jié)果如下:

201637153755441.png (677×442)

3.Select子句
在select子句上可以非常靈活的處理查詢到的元素,然后再把結(jié)果返回。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LINQ_select
{
  /// <summary>
  /// LINQ select
  /// 在select子句上,可以非常靈活的處理查詢到的元素,然后再把結(jié)果返回
  /// </summary>
  class MyGustInfo
  {
    public string Name { get; set; }
    public int Age { get; set; }
  }
  class Program
  {
    static void Main(string[] args)
    {
      List<GustInfo> gList = new List<GustInfo>() 
      {
        new GustInfo(){ Name="DebugLZQ", Age=25, Tel="88888888"},
         new GustInfo(){ Name="cnblogs", Age=6, Tel="666666"},
         new GustInfo(){ Name="M&M", Age=9, Tel="55555"}
      };
      var query = from gust in gList
            where gust.Age >= 9 && gust.Age <= 30
            select gust.Name.Replace("&", "mm");//select子句靈活應(yīng)用
      var query2 = from gust in gList
             where gust.Age >= 9 && gust.Age <= 30
             select MyProc(gust.Name);
      var query3 = from gust in gList
             where gust.Age >= 9 && gust.Age <= 30
             select new { gust.Name,gust.Age};

      var query4 = from gust in gList
             where gust.Age >= 9 && gust.Age <= 30
             select new MyGustInfo { Name=gust.Name+"My", Age=gust.Age+1};//對查詢結(jié)果進行投影

      foreach (var v in query)
      {
        Console.WriteLine(v);
      }
      foreach (var v in query2)
      {
        Console.WriteLine(v);
      }
      foreach (var v in query3)
      {
        Console.WriteLine(v.Name+v.Age );
      }
      foreach (var v in query4)
      {
        Console.WriteLine(v.Name+v.Age );
      }

      Console.ReadKey(false);
    }
    static string MyProc(string s)
    {
      return s + "Better";
    }
  }
}

程序的運行結(jié)果如下:

 4.group子句
 根據(jù)語法的規(guī)定,LINQ表達式必須以from子句開頭,以select或group子句結(jié)束,所以除了使用select來返回結(jié)果外,也可以使用group子句來返回元素分組后的結(jié)果。

group子句返回的是一個基于IGrouping<TKey,TElement>泛型接口的對象序列。

語法和SQL的group有點區(qū)別,不注意的話可能會寫錯。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LINQ_group
{
  /// <summary>
  /// LINQ group子句
  /// </summary>
  class Program
  {
    static void Main(string[] args)
    {
      List<GustInfo> gList = new List<GustInfo>() 
      {
        new GustInfo(){ Name="DebugLZQ",Age=26,Tel="187********"},
        new GustInfo(){ Name="Sarah",Age=25,Tel="159********"},
        new GustInfo(){ Name="Jerry",Age=35,Tel="135********"},
        new GustInfo(){ Name="M&M",Age=16,Tel="136********"},
        new GustInfo(){ Name="DebugMan",Age=26,Tel="136********"},
        new GustInfo(){ Name="Jerry&Tom",Age=19,Tel="136********"},
      };

      var query = from guest in gList
            group guest by guest.Name.Substring(0, 1);//分組鍵key是string類型

      //遍歷鍵值和鍵值所屬元素
      foreach (IGrouping<string, GustInfo> guestGroup in query)
      {
        Console.WriteLine("分組鍵:{0}",guestGroup.Key );
        foreach (var g in guestGroup)
        {
          Console.WriteLine("{0} 年齡:{1} 電話:{2}",g.Name,g.Age,g.Tel );
        }
      }
      Console.ReadKey(false);

      Console.WriteLine("-----------------------------------");

      var query2 = from guest in gList
             group guest by guest.Age > 20;//分組鍵key是bool類型表達式的結(jié)果

      foreach (IGrouping<bool, GustInfo> guestGroup in query2)
      {
        Console.WriteLine("年齡是否大于20 分組鍵:{0}", guestGroup.Key);
        foreach (var g in guestGroup)
        {
          Console.WriteLine("{0} 年齡:{1} 電話:{2}", g.Name, g.Age, g.Tel);
        }
      }
      Console.ReadKey(false);
    }
  }
}

程序的運行結(jié)果如下:

201637153931581.png (677×442)

5.into子句
 into子句作為一個臨時標(biāo)識符,用于group、select、join子句中充當(dāng)其結(jié)果的引用。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LINQ_into
{
  /// <summary>
  /// LINQ group
  /// </summary>
  class Program
  {
    static void Main(string[] args)
    {
      List<GustInfo> gList = new List<GustInfo>() 
      {
        new GustInfo(){ Name="DebugLZQ",Age=26,Tel="187********"},
        new GustInfo(){ Name="Sarah",Age=25,Tel="159********"},
        new GustInfo(){ Name="Jerry",Age=35,Tel="135********"},
        new GustInfo(){ Name="M&M",Age=16,Tel="136********"},
        new GustInfo(){ Name="DebugMan",Age=26,Tel="136********"},
        new GustInfo(){ Name="Jerry&Tom",Age=19,Tel="136********"},
      };

      //1.into用于group子句
      var query = from guest in gList
            group guest by guest.Name.Substring(0, 1) into grguest
            orderby grguest.Key descending
            select grguest;

      var query2 = from guest in gList
            group guest by guest.Name.Substring(0, 1) into grguest
            orderby grguest.Key ascending 
            select grguest;

      //2.select 子句中的into子句
      var query3 = from guest in gList
             select new { NewName = guest.Name, NewAge = guest.Age } into newguest
             orderby newguest.NewAge
             select newguest;

      foreach (var guestGroup in query)
      {
        Console.WriteLine("分組鍵:{0}",guestGroup.Key );
        foreach (var g in guestGroup)
        {
          Console.WriteLine("{0} 電話:{1}",g.Name,g.Tel );
        }
      }
      Console.ReadKey(false);

      foreach (var newg in query3)
      {
        Console.WriteLine("{0} 年齡:{1}",newg.NewName,newg.NewAge );
      }

      Console.ReadKey(false);
    }
  }
}

程序運行結(jié)果如下:

201637154008267.png (677×442)

6.orderby子句、thenby子句
 LINQ可以按照元素的一個或多個屬性對元素進行排序。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LINQ_orderby
{
  class Program
  {
    /// <summary>
    /// LINQ orderby (ascending descending)
    /// </summary>
    /// <param name="args"></param>
    static void Main(string[] args)
    {
      List<GustInfo> gList = new List<GustInfo>() 
      {
        new GustInfo(){ Name="DebugLZQ",Age=26,Tel="187********"},
        new GustInfo(){ Name="Sarah",Age=25,Tel="159********"},
        new GustInfo(){ Name="Jerry",Age=35,Tel="135********"},
        new GustInfo(){ Name="M&M",Age=16,Tel="136********"},
        new GustInfo(){ Name="DebugMan",Age=26,Tel="136********"},
        new GustInfo(){ Name="Jerry&Tom",Age=19,Tel="136********"},
      };

      //按照年齡排序
      var query = from guest in gList
            orderby guest.Age
            select guest;
      var query1 = from guest in gList
             orderby guest.Age ascending
             select guest;
      var query2 = from guest in gList
             orderby guest.Age descending
             select guest;
      //按照年齡進行排序,按照名字字?jǐn)?shù)進行次要排序
      var query3 = from guest in gList
            orderby guest.Age, guest.Name.Length
            select guest;
      var query4 = from guest in gList
             orderby guest.Age descending , guest.Name.Length ascending 
             select guest;
      var query5 = from guest in gList
             orderby guest.Age, guest.Name.Length,guest.Tel 
             select guest;

      foreach (var guest in query2)
      {
        Console.WriteLine("{0} 年齡:{1} 電話:{2}",guest.Name,guest.Age,guest.Tel );
      }
      Console.ReadKey(false);
      foreach (var guest in query4)
      {
        Console.WriteLine("{0} 年齡:{1} 電話:{2}", guest.Name, guest.Age, guest.Tel);
      }
      Console.ReadKey(false);
    }
  }
}

程序運行結(jié)果如下:

201637154108735.png (677×442)

7.let子句
let子句用于在LINQ表達式中存儲子表達式的計算結(jié)果。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LINQ_let
{
  /// <summary>
  /// LINQ let用來存子儲表達式的計算結(jié)果
  /// </summary>
  class Program
  {
    static void Main(string[] args)
    {
      List<GustInfo> gList = new List<GustInfo>() 
      {
        new GustInfo(){ Name="DebugLZQ",Age=26,Tel="187********"},
        new GustInfo(){ Name="Sarah",Age=25,Tel="159********"},
        new GustInfo(){ Name="Jerry",Age=35,Tel="135********"},
        new GustInfo(){ Name="M&M",Age=16,Tel="136********"},
        new GustInfo(){ Name="DebugMan",Age=26,Tel="136********"},
        new GustInfo(){ Name="Jerry&Tom",Age=19,Tel="136********"},
      };

      //使用let子句創(chuàng)建范圍變量g,并通過g構(gòu)建查詢表達式
      var query = from guest in gList
            let g = guest.Name.Substring(0, 1)
            where g == "D" || g == "J"
            select guest;
      //也可以不使用let,上面的語句等效于下
      var query2 = from guest in gList
             where guest.Name.Substring(0, 1) == "D" || guest.Name.Substring(0, 1) == "J"
             select guest;

      foreach (var g in query)
      {
        Console.WriteLine("{0} 年齡:{1} 電話:{2}",g.Name,g.Age,g.Tel );
      }
      Console.ReadKey(false);
      Console.WriteLine("不使用let,等效的語句結(jié)果");
      foreach (var g in query2)
      {
        Console.WriteLine("{0} 年齡:{1} 電話:{2}", g.Name, g.Age, g.Tel);
      }
      Console.ReadKey(false);
    }
  }
}

程序的運行結(jié)果如下:

201637154137605.png (677×442)

8.join子句
如果一個數(shù)據(jù)源中元素的某個屬性可以跟另外一個數(shù)據(jù)源的中元素的某個屬性進行相等比較,那么這兩個數(shù)據(jù)源可以用join子句進行關(guān)聯(lián)。

join子句使用equals關(guān)鍵字進行相等比較,而不是常用的雙等號。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LINQ_join
{
  class Program
  {
    static void Main(string[] args)
    {
      //定義兩個數(shù)據(jù)源
      List<GustInfo> gList = new List<GustInfo>() 
      {
        new GustInfo(){ Name="DebugLZQ",Age=26,Tel="187********"},
        new GustInfo(){ Name="Sarah",Age=25,Tel="159********"},
        new GustInfo(){ Name="Jerry",Age=35,Tel="135********"},
        new GustInfo(){ Name="M&M",Age=16,Tel="136********"},
        new GustInfo(){ Name="DebugMan",Age=26,Tel="136********"},
        new GustInfo(){ Name="Jerry&Tom",Age=19,Tel="136********"},
      };

      List<GuestTitle> titleList = new List<GuestTitle>() 
      {
        new GuestTitle(){Name="DebugLZQ",Title="Soft Engineer"},
        new GuestTitle(){Name="DebugLZQ",Title="Team Leader"},
        new GuestTitle(){Name="Sarah",Title="Test Engineer"},
        new GuestTitle(){Name="Jerry",Title="Head Master"}
      };
      //1.根據(jù)姓名進行內(nèi)連接
      var query = from guest in gList
            join title in titleList on guest.Name equals title.Name
            select new { Name=guest.Name ,Title=title.Title,Age=guest.Age };

      foreach (var g in query)
      {
        Console.WriteLine("{0} {1} 年齡:{2}",g.Name,g.Title ,g.Age );
      }
      Console.ReadKey(false);

      //前面的多個from實現(xiàn)相同的作用:與內(nèi)連接區(qū)別在于:這個中間的操作是叉乘獲得笛卡爾積
      var query2=from guest in gList 
            from title in titleList 
            where guest.Name==title.Name
            select new { Name = guest.Name, Title = title.Title, Age = guest.Age };

      foreach (var g in query2)
      {
        Console.WriteLine("{0} {1} 年齡:{2}", g.Name, g.Title, g.Age);
      }
      Console.ReadKey(false);

      //2.根據(jù)姓名進行分組連接
      //根據(jù)名字分組后,得到每個名字下的全部名稱
      var query3 = from guest in gList
             join title in titleList on guest.Name equals title.Name into tgroup
             select new { Name=guest.Name,Titles=tgroup };

      foreach (var g in query3)
      {
        Console.WriteLine(g.Name);
        foreach (var g2 in g.Titles)
        {
          Console.WriteLine("  {0}",g2.Title );
        }
      }
      Console.ReadKey(false);
      //3.根據(jù)姓名進行左外連接
      //無職務(wù)的輸出為空缺
      var query4 = from guest in gList
             join title in titleList on guest.Name equals title.Name into tgroup
             from subtitle in tgroup.DefaultIfEmpty()
             select new { Name=guest.Name,Title=subtitle==null?"空缺":subtitle.Title };
      foreach (var g in query4)
      {
        Console.WriteLine("{0} {1} ",g.Name ,g.Title );
      }
      Console.ReadKey(false);
      
    }
  }
}

程序結(jié)果如下:

201637154220463.png (677×442)

以上就是LINQ的基本子句的常用用法,文字不是很多,因為代碼中都有詳細(xì)的注釋說明。

相關(guān)文章

  • C#遍歷指定目錄下所有文件的方法

    C#遍歷指定目錄下所有文件的方法

    這篇文章主要介紹了C#遍歷指定目錄下所有文件的方法,實例分析了C#中GetFiles()方法遍歷文件的使用技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • C#使用System.Net郵件發(fā)送功能踩過的坑

    C#使用System.Net郵件發(fā)送功能踩過的坑

    這篇文章主要介紹了C#使用System.Net郵件發(fā)送功能踩過的坑,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • C#如何動態(tài)創(chuàng)建lambda表達式

    C#如何動態(tài)創(chuàng)建lambda表達式

    這篇文章主要介紹了C#如何動態(tài)創(chuàng)建lambda表達式問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • c#使用FreeSql生產(chǎn)環(huán)境時自動升級備份數(shù)據(jù)庫

    c#使用FreeSql生產(chǎn)環(huán)境時自動升級備份數(shù)據(jù)庫

    使用FreeSql,包含所有的ORM數(shù)據(jù)庫,都會存在這樣的問題。在codefirst模式下,根據(jù)代碼自動更新數(shù)據(jù)庫,都建議不要在生產(chǎn)環(huán)境使用。因為容易丟失數(shù)據(jù),本文提供一種自動更新數(shù)據(jù)庫的解決的思路:在判斷需要升級時,才自動升級,同時升級前先備份數(shù)據(jù)庫
    2021-06-06
  • C#微信公眾號開發(fā)之接收事件推送與消息排重的方法

    C#微信公眾號開發(fā)之接收事件推送與消息排重的方法

    這篇文章主要介紹了C#微信公眾號開發(fā)之接收事件推送與消息排重的方法,詳細(xì)分析了事件推送與消息排重的使用技巧,對微信開發(fā)有一定參考借鑒價值,需要的朋友可以參考下
    2015-01-01
  • C# 實現(xiàn)基于ADO.NET框架的DBHelper工具類(簡化數(shù)據(jù)庫操作)

    C# 實現(xiàn)基于ADO.NET框架的DBHelper工具類(簡化數(shù)據(jù)庫操作)

    ADO.NET是.NET框架中用于與數(shù)據(jù)庫交互的核心組件,提供了一套用于連接數(shù)據(jù)庫、執(zhí)行SQL查詢、插入、更新和刪除數(shù)據(jù)的類庫,包括SqlConnection、SqlCommand、SqlDataReader等,本文介紹如何使用DBHelper類封裝數(shù)據(jù)庫操作,以提高代碼的可維護性和復(fù)用性,感興趣的朋友一起看看吧
    2024-08-08
  • C#中程序自刪除實現(xiàn)方法

    C#中程序自刪除實現(xiàn)方法

    這篇文章主要介紹了C# 程序自刪除實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Unity實現(xiàn)相機截圖功能

    Unity實現(xiàn)相機截圖功能

    這篇文章主要為大家詳細(xì)介紹了Unity實現(xiàn)相機截圖功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • UnityRTS實現(xiàn)相機移動縮放功能

    UnityRTS實現(xiàn)相機移動縮放功能

    這篇文章主要為大家詳細(xì)介紹了UnityRTS實現(xiàn)相機的移動縮放功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • c#實現(xiàn)識別圖片上的驗證碼數(shù)字

    c#實現(xiàn)識別圖片上的驗證碼數(shù)字

    這篇文章主要介紹了c#實現(xiàn)識別圖片上的驗證碼數(shù)字的方法,本文給大家匯總了2種方法,有需要的小伙伴可以參考下。
    2015-11-11

最新評論

古田县| 崇义县| 建始县| 十堰市| 五峰| 仙桃市| 张家口市| 南充市| 永仁县| 卢龙县| 双城市| 灌南县| 双鸭山市| 苏州市| 海安县| 溧水县| 介休市| 延庆县| 彝良县| 牙克石市| 霍林郭勒市| 大田县| 郸城县| 永安市| 崇礼县| 申扎县| 利辛县| 安吉县| 遂川县| 文化| 集安市| 安新县| 边坝县| 邵武市| 图片| 青神县| 巴彦县| 旬邑县| 姜堰市| 西充县| 临猗县|