トップ回答者
クエリ式について

質問
-
using System;
using System.Collections;
using System.Linq;class MyConsole
{
public static void Main()
{
Country co = new Country("Australia");
var query =
from Country c in co
select c;
}
}
class Country
{
public Country(string name)
{
c_name = name;
}
public string c_name;
}
以上のようなソースコードを書くと
「ソース型'Country'のクエリパターンの実装が見つかりませんでした。'Cast'が見つかりません。」
というエラーが出ます。どこがおかしいのでしょうか?
回答
-
Visual Basic における LINQ の概要
http://msdn.microsoft.com/ja-jp/library/bb763068.aspx
LINQ クエリ式 (C# プログラミング ガイド)
http://msdn.microsoft.com/ja-jp/library/bb397676.aspx
<引用>
LINQ を使用すると、SQL Server データベース、XML、インメモリ配列、インメモリ コレクション、ADO.NET データセットなど、LINQ をサポートするリモートまたはローカルのデータ ソースのデータを照会できます。
ちなみに書かれているのはC#ですのでC#で説明します。
var query =
from Country c in co
select c;
この場合は、 co は 配列・コレクション・リストである必要があります。
(正確に言うと IEnumerable インターフェイスまたは IEnumerable(Of T) インターフェイスをサポートしている必要があります。)
たとえば、データベースで以下のようにすると、COUNTRYテーブル(複数の列の集合)からCOUNTRYテーブルの各要素(この場合はNAMEだけ)の配列のようなものを取得できます。
SELECT * FROM COUNTRY
Linq もこれと同じで以下のようにするとco(Countryの配列・コレクション・リスト)からforeachでCountryの配列・コレクション・リストの各要素を取得できます。
Country[] co = new Country[] {new Country("Australia"),new Country("Japan")}; var query = from Country c in co select c; foreach (var c in query) { Console.WriteLine(c.c_name); }
もちろんただ取得するだけでは co を foreach しても同じなのでですが、Linqは条件で絞ったりやソートなどLinq特有の操作を行えます。
えムナウ@わんくま同盟 Microsoft MVP Visual Studio C# Since 2005/01-2009/12- 回答としてマーク Pawopewo 2009年8月4日 14:04
すべての返信
-
Visual Basic における LINQ の概要
http://msdn.microsoft.com/ja-jp/library/bb763068.aspx
LINQ クエリ式 (C# プログラミング ガイド)
http://msdn.microsoft.com/ja-jp/library/bb397676.aspx
<引用>
LINQ を使用すると、SQL Server データベース、XML、インメモリ配列、インメモリ コレクション、ADO.NET データセットなど、LINQ をサポートするリモートまたはローカルのデータ ソースのデータを照会できます。
ちなみに書かれているのはC#ですのでC#で説明します。
var query =
from Country c in co
select c;
この場合は、 co は 配列・コレクション・リストである必要があります。
(正確に言うと IEnumerable インターフェイスまたは IEnumerable(Of T) インターフェイスをサポートしている必要があります。)
たとえば、データベースで以下のようにすると、COUNTRYテーブル(複数の列の集合)からCOUNTRYテーブルの各要素(この場合はNAMEだけ)の配列のようなものを取得できます。
SELECT * FROM COUNTRY
Linq もこれと同じで以下のようにするとco(Countryの配列・コレクション・リスト)からforeachでCountryの配列・コレクション・リストの各要素を取得できます。
Country[] co = new Country[] {new Country("Australia"),new Country("Japan")}; var query = from Country c in co select c; foreach (var c in query) { Console.WriteLine(c.c_name); }
もちろんただ取得するだけでは co を foreach しても同じなのでですが、Linqは条件で絞ったりやソートなどLinq特有の操作を行えます。
えムナウ@わんくま同盟 Microsoft MVP Visual Studio C# Since 2005/01-2009/12- 回答としてマーク Pawopewo 2009年8月4日 14:04