を使用して、Microsoft Accessとフィルタリングデータの列[長い質問の謝罪が、私は他の人が答えるすることが明確になるだろうと思っ]ブールLINQ
私はMicrosoft Accessデータベースを持っており、それが次を持つテーブル「顧客」が含まれていますコラム:
- ID(自動番号)
- 名(テキスト)
- アクティブ(はい/いいえ)
私は以下のようにC#でデータベースのテーブルクラスを作成しました:
[Table (Name = "Products")]
public class Product
{
[Column (IsPrimaryKey = true, Name = "ProductID")]
public int ID;
[Column (Name = "ProductName")]
public string Name;
[Column (Name = "Active")]
public bool Active;
}
そして、私はアクティブになっている製品を取得するには、次のコードスニペットを使用しています:
using (var con = new OleDbConnection
(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\LearnLinq.accdb")) {
var db = new DataContext (con);
var productTable = db.GetTable<Product>();
var allProducts = from p in productTable
where p.Active
select p;
foreach (var p in allProducts) {
AddLine ("ID: " + p.ID.ToString() +
", Name: " + p.Name +
", Active: " + p.Active.ToString());
}
}
問題はその "でクエリ結果の上にあります記録なし"。私は生成されたSQLを分析しようとしました。それは以下のようなものです:
SELECT [t0].[ProductID] AS [ID], [t0].[ProductName] AS [Name], [t0].[Active]
FROM [Products] AS [t0]
WHERE [t0].[Active] = 1
なぜそれが起こっているはずですか?
クラスのために投稿したコードはVBAではありません。どんな言語でプログラミングしていますか?あなたは明らかにAccess、Jetだけを使用していません。これは答えに大きな違いをもたらします。 –
上記のコードは、単純なC#windowsフォームアプリケーションから来ています。 – Hemant