2

LINQを使用してMySQLデータベースをクエリしようとしています。

まず、MySQL.NETコネクタをインストールしました。次に、Visual Studioで、新しいコンソールアプリケーションを作成します。

次にData、ツールバーのをクリックして、をクリックしますAdd New Data Source

データソース構成ウィザードでDatabase => Dataset => New Connection、接続パラメーターを構成し、関連するテーブル、ビューなどを選択して、[完了]をクリックします。

私のデータソースの名前Fooは、クエリしたいテーブルの名前Barです。

次に、以下のようにLINQを使用してデータテーブルをクエリします。

fooDataSet.barDataTable foobar = new fooDataSet.barDataTable();
var results = from data in foobar
              select data;

foreach (var result in results)
{
    Console.WriteLine(result);
};

これは次のMySQLと同等だと思います

SELECT * FROM BAR;

テーブル(バー)には大量のデータが含まれていますが、データが返されません。適切にブレークポイントを設定し、結果変数の結果ビューにドリルダウンすると、「Ж」と表示されます。

列挙は結果を生成しませんでした

ここに画像の説明を入力してください

ここでどこが間違っているのですか?

4

2 に答える 2

6

新しいテーブルを作成し、そこからデータを読み取ろうとしています (そこには何もありません。新しいです!)

LINQ to SQL では、次のようにします。

var results = from data in fooDataset.bar 
              select data; 

foreach (var result in results) 
{ 
    Console.WriteLine(result); 
}
于 2012-06-28T08:55:56.593 に答える
0

これは、Windowsフォームで最初の手順を繰り返し、クエリするテーブルをサーバーエクスプローラーからWindowsフォームにドラッグしてから、コードを分析することで理解できました。

最初にデータセットのインスタンスを作成する必要があり(Foo)、次にテーブルのTableAdapterインスタンスを作成する必要がありました(Bar)。

これを行ったら、テーブルアダプターのメソッドを呼び出し、Fillドット表記を使用してデータセット内のテーブル名を渡します。

次に、テーブルアダプターのGetData()のAsEnumerable()拡張メソッドを実行してEnumerableRowCollectionを取得します。これにより、LINQを使用してクエリを実行できます。私のコードは以下の通りです:

static void Main(string[] args)
{
    fooDataSet fooDataSet = new fooDataSet();
    fooDataSetTableAdapters.barTableAdapter barTableAdapter = new fooDataSetTableAdapters.barTableAdapter();

    barTableAdapter.Fill(fooDataSet.bar);

    var myDataTable = barTableAdapter.GetData().AsEnumerable();

    var bnl = from results in myDataTable
              select results;

    Console.ReadLine();
}

ちなみに、Visual Studioによって作成されたXSDファイルでは、null値を持つ列に条件を適用しようとすると、すべてのテーブルのすべてのフィールドがデフォルトで例外をスローするように設定されています。これを回避するには、XSDのフィールドのNullValueプロパティを(Empty)または(Null)に変更する必要があります。

于 2012-06-28T15:22:11.700 に答える