サンプルコード
//---------------------------------------- // select そんまま返す //---------------------------------------- var q1 = from sa in Sales select sa; q1.Dump(); /* SELECT [t0].[stor_id] AS [Stor_id], [t0].[ord_num] AS [Ord_num], [t0].[ord_date] AS [Ord_date], [t0].[qty] AS [Qty], [t0].[payterms] AS [Payterms], [t0].[title_id] AS [Title_id] FROM [sales] AS [t0] */ //---------------------------------------- // select newして返す //---------------------------------------- var q2 = from st in Stores select new { StoreName = st.Stor_name }; q2.Dump(); /* SELECT [t0].[stor_name] AS [StoreName] FROM [stores] AS [t0] */ //---------------------------------------- // distinctで返す、クエリー式にdistinctがないため、このように書きます //---------------------------------------- var q3 = (from sa in Sales join st in Stores on sa.Stor_id equals st.Stor_id select new { StoreName = st.Stor_name }).Distinct(); q3.Dump(); /* SELECT DISTINCT [t1].[stor_name] AS [StoreName] FROM [sales] AS [t0] INNER JOIN [stores] AS [t1] ON [t0].[stor_id] = [t1].[stor_id] */ //---------------------------------------- // where //---------------------------------------- var q4 = from st in Stores where st.State == "CA" && st.Zip.StartsWith("9") select st; q4.Dump(); /* SELECT [t0].[stor_id] AS [Stor_id], [t0].[stor_name] AS [Stor_name], [t0].[stor_address] AS [Stor_address], [t0].[city] AS [City], [t0].[state] AS [State], [t0].[zip] AS [Zip] FROM [stores] AS [t0] WHERE ([t0].[state] = @p0) AND ([t0].[zip] LIKE @p1) */ //---------------------------------------- // group //---------------------------------------- var q5 = from st in Stores group st by st.State; q5.Dump(); /* SELECT [t0].[state] AS [Key] FROM [stores] AS [t0] GROUP BY [t0].[state] */ //---------------------------------------- // group //---------------------------------------- (from s in Sales orderby s.Qty descending select s).Dump(); /* SELECT [t0].[stor_id] AS [Stor_id], [t0].[ord_num] AS [Ord_num], [t0].[ord_date] AS [Ord_date], [t0].[qty] AS [Qty], [t0].[payterms] AS [Payterms], [t0].[title_id] AS [Title_id] FROM [sales] AS [t0] ORDER BY [t0].[qty] DESC */ //---------------------------------------- // into(クエリ結果を一時的に保存) //---------------------------------------- var q6 = from st in Stores group st by st.State into g orderby g.Key descending select g; q6.Dump(); /* SELECT [t1].[state] AS [Key] FROM ( SELECT [t0].[state] FROM [stores] AS [t0] GROUP BY [t0].[state] ) AS [t1] ORDER BY [t1].[state] DESC */ //---------------------------------------- // let(一時変数) //---------------------------------------- var q7 = from sa in Sales let qtyLevel = (sa.Qty / 10) * 10 group sa by qtyLevel into tempSales orderby tempSales.Key ascending select new { QtyLevel = tempSales.Key, Data = (from ts in tempSales orderby ts.Qty descending select ts) }; q7.Dump(); //---------------------------------------- // 内部結合 //---------------------------------------- var q8 = from sale in Sales join title in Titles on sale.Title_id equals title.Title_id orderby sale.Qty descending select new { Title = title.Title, Qty = sale.Qty }; q8.Dump(); //---------------------------------------- // 内部結合2 //---------------------------------------- var ij = from s in Sales join t in Titles on s.Title_id equals t.Title_id select new { TitleId = s.Title_id, OrderNum = s.Ord_num, Title = t.Title }; ij.Dump(); /* SELECT [t0].[title_id] AS [TitleId], [t0].[ord_num] AS [OrderNum], [t1].[title] AS [Title] FROM [sales] AS [t0] INNER JOIN [titles] AS [t1] ON [t0].[title_id] = [t1].[title_id] */ //---------------------------------------- // グループ化結合 //---------------------------------------- var q9 = from st in Stores group st by st.State into tempGroup orderby tempGroup.Key descending select new { State = tempGroup.Key, Group = (from g in tempGroup orderby g.Stor_id descending select g) }; q9.Dump(); //---------------------------------------- // 外部結合 //---------------------------------------- var lr = from sa in Sales join t in Titles on sa.Title_id equals t.Title_id into tempTitle from title in tempTitle.DefaultIfEmpty() join st in Stores on sa.Stor_id equals st.Stor_id into tempStore from store in tempStore.DefaultIfEmpty() select new { TitleId = sa.Title_id, OrderNum = sa.Ord_num, Title = title.Title, StoreName = store.Stor_name }; lr.Dump(); /* SELECT [t0].[title_id] AS [TitleId], [t0].[ord_num] AS [OrderNum], [t1].[title] AS [Title], [t2].[stor_name] AS [StoreName] FROM [sales] AS [t0] LEFT OUTER JOIN [titles] AS [t1] ON [t0].[title_id] = [t1].[title_id] LEFT OUTER JOIN [stores] AS [t2] ON [t0].[stor_id] = [t2].[stor_id] */ //---------------------------------------- // uion(重複なし) //---------------------------------------- var q10 = (from store in Stores select store.State).Union(from store in Stores select store.State); q10.Dump(); //---------------------------------------- // uion all(重複あり) //---------------------------------------- var q11 = (from store in Stores select store.State).Concat(from store in Stores select store.State); q11.Dump(); //---------------------------------------- // except、左側のシーケンスにある要素のみを抽出 //---------------------------------------- var q12 = (from store in Stores select store.State).Except(from store in Stores where store.State == "WA" select store.State); q12.Dump(); //---------------------------------------- // incorrect、両方のシーケンスにある要素を抽出 //---------------------------------------- var q13 = (from store in Stores where store.State == "CA" select store.State).Intersect(from store in Stores where store.State == "CA" select store.State); q13.Dump(); //---------------------------------------- // count //---------------------------------------- var q14 = from store in Stores select store; q14.Count().Dump(); q14.Count(a => a.State == "WA").Dump(); //---------------------------------------- // sum //---------------------------------------- var q16 = from sale in Sales group sale by sale.Stor_id into tempGroup orderby tempGroup.Sum(a => a.Qty) select new { StoreId = tempGroup.Key, count = tempGroup.Sum(a => a.Qty) }; q16.Dump(); /* SELECT [t1].[stor_id] AS [StoreId], [t1].[value2] AS [count] FROM ( SELECT SUM(CONVERT(Int,[t0].[qty])) AS [value], SUM(CONVERT(Int,[t0].[qty])) AS [value2], [t0].[stor_id] FROM [sales] AS [t0] GROUP BY [t0].[stor_id] ) AS [t1] ORDER BY [t1].[value] */ //---------------------------------------- // max,min //---------------------------------------- var q17 = from sale in Sales group sale by sale.Stor_id into tempGroup orderby tempGroup.Max(a => a.Qty) descending select new { StoreId = tempGroup.Key, MaxCount = tempGroup.Max(a => a.Qty), MinCount = tempGroup.Min(a => a.Qty), DataCount = tempGroup.Count() }; q17.Dump(); /* SELECT [t1].[stor_id] AS [StoreId], [t1].[value2] AS [MaxCount], [t1].[value3] AS [MinCount], [t1].[value4] AS [DataCount] FROM ( SELECT MAX([t0].[qty]) AS [value], MAX([t0].[qty]) AS [value2], MIN([t0].[qty]) AS [value3], COUNT(*) AS [value4], [t0].[stor_id] FROM [sales] AS [t0] GROUP BY [t0].[stor_id] ) AS [t1] ORDER BY [t1].[value] DESC */ //---------------------------------------- // average //---------------------------------------- var q18 = from sale in Sales group sale by sale.Stor_id into tempGroup orderby tempGroup.Sum(a => a.Qty) select new { StoreId = tempGroup.Key, count = tempGroup.Average(a => a.Qty) }; q18.Dump(); /* SELECT [t1].[stor_id] AS [StoreId], [t1].[value2] AS [count] FROM ( SELECT SUM(CONVERT(Int,[t0].[qty])) AS [value], AVG(CONVERT(Int,[t0].[qty])) AS [value2], [t0].[stor_id] FROM [sales] AS [t0] GROUP BY [t0].[stor_id] ) AS [t1] ORDER BY [t1].[value] */ //---------------------------------------- // range //---------------------------------------- // foreach (var i in Enumerable.Range(0, 10)) // { // Console.WriteLine(i.ToString()); // } //---------------------------------------- // repeat //---------------------------------------- // foreach (var i in Enumerable.Repeat(1,100)) // { // Console.WriteLine(i.ToString()); // } //---------------------------------------- // any、合致する要素がシーケンス内に存在するか否かを確認 //---------------------------------------- var q19 = from s in Sales where s.Qty >= 75 select s; q19.Any().Dump(); // true q19.Any(a => a.Qty >=75 ).Dump(); //true //---------------------------------------- // all、シーケンスの全要素が指定された条件に合致しているか否かを判別 //---------------------------------------- var q20 = from s in Sales where s.Stor_id == "6380" select s; q20.All(a => a.Stor_id == "6380").Dump(); // true q20.All(a => a.Stor_id == "9999").Dump(); // false //---------------------------------------- // contain //---------------------------------------- var q21 = from st in Stores where st.Stor_name.Contains("Book") select st; q21.Dump(); //---------------------------------------- // take、skipはクエリーにはtakeはない //---------------------------------------- var q22 = (from st in Stores orderby st.Stor_id select st).Skip(2).Take(3); q22.Dump();