Я создал общий метод для серверной части данных jquery в ядре asp.net 8, он работает, но я хочу преобразовать его в стиль EF quirybuilder вместо пользовательских запросов sql
Я пробовал много, но сталкиваюсь с проблемой получения динамических имен полей в тех условиях, в которых
текущий рабочий код
Я создал общий метод для серверной части данных jquery в ядре asp.net 8, он работает, но я хочу преобразовать его в стиль EF quirybuilder вместо пользовательских запросов sql Я пробовал много, но сталкиваюсь с проблемой получения динамических имен полей в тех условиях, в которых текущий рабочий код [code]public async Taskgetdata() { var queryString = Request.QueryString.ToString(); IDictionary qs = QueryHelpers.ParseQuery(queryString); var entityType = _context.Model.FindEntityType(typeof(Gate)); //var entityType = typeof(DTGate); var cols = entityType.GetProperties().Select(p => p.Name).ToArray();
string qry = "select * from " + entityType.GetTableName() + " where 1=1 ";
string mainConds = " and created_by="+User.Identity.UserId();
//ordering string orderBy = ""; if (qs.ContainsKey("iSortingCols") && !string.IsNullOrEmpty(qs["iSortingCols"])) { var numOfSortCols = Convert.ToInt32(qs["iSortingCols"]); List dtOrders = new List(); for (int i = 0; i < numOfSortCols; i++) { dtOrders.Add(qs["mDataProp_" + Convert.ToInt32(qs["iSortCol_" + i])] + " " + qs["sSortDir_" + i]); } if (dtOrders.Count > 0) { orderBy = " ORDER BY " + string.Join(",", dtOrders); } }
//main filter List filterCondsList = new List(); if (qs.ContainsKey("sSearch") && !string.IsNullOrEmpty(qs["sSearch"])) { var searchTerm = qs["sSearch"]; foreach (var col in cols) { string thisCond = " " + col + " LIKE '%" + searchTerm + "%'"; filterCondsList.Add(thisCond); } } string filterConds = ""; if (filterCondsList.Count > 0) { filterConds = "(" + string.Join(" OR ", filterCondsList) + ")"; }
//column level filtering string colConds = ""; int qsColumns = Convert.ToInt32(qs["iColumns"]); for (int i = 0; i < qsColumns; i++) { var searchableKey = "bSearchable_" + i; var cSearchTermIndx = "sSearch_" + i;
if (qs.ContainsKey(searchableKey) && qs[searchableKey] == "true" && qs.ContainsKey(cSearchTermIndx) && !string.IsNullOrEmpty(qs[cSearchTermIndx])) { colConds += " AND " + qs["mDataProp_" + i] + " LIKE '%" + qs[cSearchTermIndx] + "%'"; } } if (colConds != "") { colConds = colConds.Substring(4); }