where
功能:主要判斷有沒有達成限制條件,並抓出每個陣列的資料比對並取代numb
select
功能:傳回呼叫的值或新陣列,可以是單純取代numb或numb+10這種或new
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Linq;
public class Exercisc : MonoBehaviour
{
void Start()
{
//沒有添加版
int [] x = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
var num = from num_x in x
select num_x + 1;
foreach (var int_x in num)
{
Debug.Log(int_x);//2,3,4,5,6,7,8,9,10
}
//有where版
int[] x = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
var num = from num_x in x
where num_x > 5
select num_x;
foreach (var int_x in num)
{
Debug.Log(int_x);//6,7,8,9
}
}
}
//select用new{}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Linq;
public class Exercisc : MonoBehaviour
{
public class Food
{
public int Number_Food { set; get;}
public string Food_Name { set; get;}
}
void Start()
{
List<Food> Food_A = new List<Food>
{ new Food {Number_Food=1,Food_Name="麵包" },
new Food {Number_Food=2,Food_Name="漢堡" },
new Food {Number_Food=3,Food_Name="蛋餅" },
new Food {Number_Food=4,Food_Name="饅頭" },
new Food {Number_Food=5,Food_Name="包子" },
};
var Food_All = from F_A in Food_A
where F_A.Number_Food>2
select new {F_A.Number_Food,F_A.Food_Name };
foreach (var F_all in Food_All)
{
Debug.Log(F_all);//{ Number_Food = 3, Food_Name = 蛋餅 }{Number_Food=4,Food_Name="饅頭" }{Number_Food=5,Food_Name="包子" }
Debug.Log(F_all.Number_Food);//3 4 5
Debug.Log(F_all.Food_Name);//蛋餅 饅頭 包子
}
}
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
join
1.只能判定等不等於,不能判定大於、小於所以才只能打equals
from D_A in Drink_A//設定抓取的內部資料
join Pack_A//(結果資料) in//(外部資料) Food_A on//(和內部資料比) D_A.Number_Drink equals//(等於) Pack_A.Number_Food
//外部資料是 一個class ,而內部資料是一個class中的一個class
on
來指定聯結條件(只能是內部來源)
equals
就是等於判斷式int、string....
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Linq;
public class Exercisc : MonoBehaviour
{
public class Food
{
public int Number_Food { set; get; }
public string Food_Name { set; get; }
}
public class Drink
{
public int Number_Drink { set; get; }
public string Drink_Name { set; get; }
}
void Start()
{
List<Food> Food_A = new List<Food>
{ new Food {Number_Food=1,Food_Name="B麵包" },
new Food {Number_Food=2,Food_Name="A漢堡" },
new Food {Number_Food=3,Food_Name="C蛋餅" },
new Food {Number_Food=4,Food_Name="D饅頭" },
new Food {Number_Food=5,Food_Name="E包子" },
};
List<Drink> Drink_A = new List<Drink>
{ new Drink {Number_Drink=1,Drink_Name="B可樂" },
new Drink {Number_Drink=2,Drink_Name="A雪碧" },
new Drink {Number_Drink=3,Drink_Name="C紅茶" },
new Drink {Number_Drink=4,Drink_Name="D咖啡" },
new Drink {Number_Drink=5,Drink_Name="E奶茶" },
};
var Pack_All = from D_A in Drink_A//抓取飲料資料
join Pack_A in Food_A//抓取食物資料 on D_A.Number_Drink equals Pack_A.Number_Food//這裡指的是以Food_A為基底的Number_Food
select new { Drink = D_A.Number_Drink ,Food=Pack_A.Food_Name};//只有填上D_A.Number_Drink和Pack_A.Food_Name所以只有2個變數被讀出來
foreach (var P_all in Pack_All)
{
Debug.Log(P_all.Food +" "+ P_all.Drink);
}
//
B麵包 1
A漢堡 2
C蛋餅 3
D饅頭 4
E包子 5
}
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
group:通常和by一起使用
功用:用來抓取from要分類的值、陣列、陣列中的陣列
into:使用在group、join、select(查詢關鍵字中 當容器用)
1.當使用into必須繼續進行查詢,最後以 select 陳述式或另一個 group 子句結束
by:使用在group後面
功用:用來寫辦定分組限制用的(分類是分成有通過限制的true一類和false一類或者要看分類方法來決定分成幾類)
let:使用在form之後
功用:建立一個以自己條件篩選後建立的變數群
適合用在把文字串變成陣列
//group範例
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Linq;
public class Exercisc : MonoBehaviour
{
public class Food
{
public int Number_Food { set; get; }
public string Food_Name { set; get; }
}
void Start()
{
List<Food> Food_A = new List<Food>
{ new Food {Number_Food=1,Food_Name="麵包" },
new Food {Number_Food=2,Food_Name="漢堡" },
new Food {Number_Food=3,Food_Name="蛋餅" },
new Food {Number_Food=4,Food_Name="饅頭" },
new Food {Number_Food=5,Food_Name="包子" },
};
//一版的
var Food_All = from F_A in Food_A
group F_A by F_A.Number_Food > 4;
foreach (var F_all in Food_All)//這裡要用2次foreach第一次抓取資料
{
Debug.Log(F_all.Key);//F_all.Key可以看到分成甚麼類別
foreach (var F_all_bool in F_all)//第二次抓取分類的資料
{
Debug.Log(F_all_bool.Number_Food);
Debug.Log(F_all_bool.Food_Name);
//false
1 麵包
2 漢堡
3 蛋餅
4 饅頭
true
5 包子
}
}
//有into和where的版本
var Food_All = from F_A in Food_A
group F_A by F_A.Number_Food > 4 into F_true
where(F_true.Key==true)
select F_true;
foreach (var F_all in Food_All)
{
Debug.Log(F_all.Key);
foreach (var F_all_bool in F_all)
{
Debug.Log(F_all_bool.Number_Food);
Debug.Log(F_all_bool.Food_Name);
}
}
}
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
orderby它的預設是ascending,所以如果要從小到大不用在打ascending
功用:排列陣列順序用的,是從小到大的排列(如A~Z 1~100這種)
ovderby x(主要排列法),y(次要排列法)//當主要方法判斷不出來時調用次要方法排列
descending一般使用在orderby後面
功用:排列陣列順序用的,是從大到小的排列(如Z~A 100~1這種)
ascending一般使用在orderby後面一般被設為預設可以不用打只要打descending
功用:排列陣列順序用的,是從小到大的排列(如A~Z 1~100這種)