FANDOM


クエリー 編集

  1. //サンプルで使用するクラス
  2.  
  3. public class Tag
  4. {
  5. 	public int Id {get; set;}
  6. 	public string TagName {get; set;}
  7. 	public ICollection<Tag> Children{get; set;}
  8. }


ソート 編集

  1. var r = from c in Tags
  2.         where c.Id > 10
  3. 		orderby c.Id descending
  4. 		select c;

descendingで降順。 ascendingで昇順。


グループ化 編集

  1. var r = from c in Tags
  2.         group c by c.TagName into g
  3. 		select g;


コレクションに条件を使用する 編集

TagクラスがもつフィールドであるChildrenコレクションに、Tag.Idが10以上となる要素を持っているTagをTagsから見つけ出します。

  1. var r = from c in Tags
  2.         where c.Children.Any(it => it.Id > 10)
  3. 		select c;
  4.  
  5. // その2
  6. var r = from c in Tags
  7.         where c.Children.Any()
  8. 		select c;
  9.  
  10. // その3
  11. var r = from c in Tags
  12.         where c.Children.All(it => it.Id > 10)
  13. 		select c;
  14.  
  15. // その3-1
  16. var r = from c in Tags
  17.         where c.Children.All(it => it.Id > 10)
  18. 		where c.Children.Count > 0
  19. 		select c;

その2はAnyの中身は空にしてますが、この場合は1つ以上の要素がChildrenに存在するものを探します。

その3はAnyの代わりに、Allを使ってコレクションに対して条件を指定しています。 Childrenのすべての要素がAllに与えた条件にマッチする要素をTagsから探します。
ただし、Allは要素数が0のコレクションの場合もTrueとします。Childrenの要素が0以上で且つ条件にマッチするコレクションを持つ要素をTagsから探したい場合には その3-1のようにします。

例外処理 編集

LINQの実行にも例外がスローすることがあるため、try-catch構文を使って例外をキャッチできます。

var linq = from p in MyList
           select p;
 
try
{
	// LINQ
	foreach(var obj in linq)
	{
		// 何らかの処理
	}
}
catch(Exception expr)
{
	// 例外スロー時の処理
}

例外が発生する箇所は、LINQを定義した箇所(var linq)の部分ではなくLINQを実行する部分となります(サンプルでの、foreach構文)

参照 編集

広告ブロッカーが検出されました。


広告収入で運営されている無料サイトWikiaでは、このたび広告ブロッカーをご利用の方向けの変更が加わりました。

広告ブロッカーが改変されている場合、Wikiaにアクセスしていただくことができなくなっています。カスタム広告ブロッカーを解除してご利用ください。

FANDOMでも見てみる

おまかせWiki