有没有办法做这样的事情:
//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');
我假设上面没有任何东西,但有没有办法达到相同的最终结果? 我将为用户提供字段和运算符的下拉列表,然后他们将在文本框中为这三个值输入他们想要的值,因此FieldName应始终是集合中的可行字段。
LINQ中有没有办法做这样的事情? 如果没有办法做到这一点...... 有没有办法用只有字符串的静态类型“SchoolEntities.Course”来创建一个IQueryable?
答案 0 :(得分:0)
你的意思是:
IQueryable<Course> data = db.CreateQuery<Course>(QueryString);
你也可以这样查询课程实体:
IQueryable<Course> data = db.Course.Where(c => c.Credits > 0 && c.Name == "Bob");
答案 1 :(得分:0)
对于困惑感到抱歉,我认为实体框架毕竟不是一个选项。
最后,我想我必须使用这种方法,以便在每次数据库获得或丢失表时保持重新部署项目的自由。
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();
}
感谢您的帮助和信息。对不起,这不是一个明确的问题。