0

このようなことをする方法はありますか?

//Create Connection.
NMBSReportViewer.Models.SchoolEntities db = new NMBSReportViewer.Models.SchoolEntities();

//Get the Data Using the Report's Stored QueryString.
String QueryString = report.Query; //"SELECT VALUE c FROM SchoolEntities.Courses AS c WHERE c.Credits > 0";
IQueryable<dynamic> data = db.CreateQuery<dynamic>(QueryString);

//Given String FieldName, String Operator, & String Value, from user, Filter the Above dataset.
data.Where(c => c.'FieldName' 'Operator' 'Value');

上記のようなものはないと思いますが、同じ最終結果を達成する方法はありますか?ユーザーのフィールドと演算子のドロップダウンリストを作成し、3つの値のテキストボックスに必要な値を入力するため、FieldNameは常にセット内で実行可能なフィールドである必要があります。

LINQにそのようなことをする方法はありますか?それを行う方法がない場合...文字列だけを指定して静的タイプの「SchoolEntities.Course」を使用してIQueryableを作成する方法はありますか?

4

2 に答える 2

0

意味は:

IQueryable<Course> data = db.CreateQuery<Course>(QueryString);

次のようにCourseエンティティにクエリを実行することもできます。

IQueryable<Course> data  = db.Course.Where(c => c.Credits > 0 && c.Name == "Bob");
于 2012-10-31T18:05:53.317 に答える
0

混乱して申し訳ありませんが、結局、EntityFrameworkはオプションではなかったと思います。

結局、データベースがテーブルを取得または失うたびにプロジェクトを再デプロイする自由を維持するために、このアプローチを使用する必要があると思います。

static void Main(string[] args)
{
//Connection String
String ConnectionString = @"Data Source = localhost\SQLEXPRESS; Initial Catalog = School; Trusted_Connection=True;";

//Create the Connection
SqlConnection DbConn = new SqlConnection(ConnectionString);

//Open the Connection
DbConn.Open();

//Query String
String QueryString = "SELECT * FROM COURSE";

//Create the SqlCommand Object
SqlCommand QueryCommand = new SqlCommand(QueryString, DbConn);

//Use the SqlCommand to create the DataReader Object.
SqlDataReader QueryCommandReader = QueryCommand.ExecuteReader();

//Create the Datatable.
DataTable DataT = new DataTable();

//Load the Data into the Table.
DataT.Load(QueryCommandReader);

//Get the User Input
String Expression = "Credits > 3";

//Create DataRows and Filter Table.
List<DataRow> FilteredData = new List<DataRow>();
FilteredData = DataT.Select(Expression).ToList();
}

ヘルプと情報をありがとう。申し訳ありませんが、それは完全に明確な質問ではありませんでした。

于 2012-10-31T18:54:10.337 に答える