Object类型集合对象或者Linq集合对象转化成Json数据 public JsonResult List() { //List<T_MaterialType> list = db.T_MaterialType.ToList(); //List<Object> result = new List<object>(); //foreach (T_MaterialType a in list) //{ // result.Add(new // { // MaterialTypeID = a.MaterialTypeID, // Factory = a.Factory, // Unit = a.Unit, // Model = a.Model, // TypeName = a.TypeName // }); //} //return Json(list); var q = from type in db.T_MaterialType select new { Material = type.MaterialTypeID, Factory = type.Factory, Unit = type.Unit, Model = type.Model, TypeName = type.TypeName }; return Json(q); } 从集合中取出单个对象 关于linq to sql语句返回值得问题 2011-8-1 16:08 提问者: 发了的风仔 | 浏览次数:223次 例如 public IQueryable<int> GetUserID(string userName) { return from user in db.users where user.userName == userName select user.userID; } 请问怎么才能把 IQueryable<int>转换成int呢? 问题补充: 在Controller中转换: userID=Convert.ToInt16(userRepository.GetUserID(User.Identity.Name)) 报错:无法将类型为“System.Data.Linq.DataQuery`1[System.Int32]”的对象强制转换为类型“System.IConvertible”。 或者有没有别的方法根据userName提取出userID??? 我用的是.net 我来帮他解答 2011-8-1 17:02 满意回答 oh!mygod! 集合怎么能转化成单个对象呢!只能从集合中取一个变成单个的对象! ---如下类似而已!保证一定存在用First,不一定用FirstOrDefault() (from x in db.users where x.userName == userName select x).First().userID 或是如下方式 仅此而已! 当然第二种好一些! 1 | 评论 向TA求助 回答者: edwin_tech 来自团队 烈火编程 | 七级采纳率:57% 擅长领域: 数据库 C#/.NET JAVA相关 操作系统/系统故障 办公软件 参加的活动: 暂时没有参加的活动 提问者对回答的评价: 谢谢啊,受教了~ 泛型集合,DataTable private DataTable toDataTable(List<T_MaterialInfo> q) { T_MaterialInfo mater; DataTable dt = new DataTable(); dt.Columns.Add("MaterialInfoID"); dt.Columns.Add("MaterialTypeID"); dt.Columns.Add("Name"); dt.Columns.Add("Number"); dt.Columns.Add("Desc"); dt.Columns.Add("InStoreUser"); try { if (q.Count > 0) { for (int i = 0; i < q.Count; i++) { mater = q[i]; DataRow dr = dt.NewRow(); dr["MaterialInfoID"] = mater.MaterialInfoID; dr["MaterialTypeID"] = mater.MaterialTypeID; dr["Name"] = mater.Name; dr["Number"] = mater.Number; dr["Desc"] = mater.Desc; dr["InStoreUser"] = mater.InStoreUser; dt.Rows.Add(dr); } } } catch (Exception e) { throw e; } return dt; } 数组,泛型集合,JSON数据 public JsonResult GetListMapoffset(List<string> id) { string[] list=new string[id.Count]; //int i = 0; //foreach (string s in id) //{ // list[i] = s; // i++; //} for (int i = 0; i < id.Count; i++) { list[i] = id[i]; } return Json(list, JsonRequestBehavior.AllowGet); 数组,DataTable public JsonResult GetListMapOffset(List<string> lnglat) { JsonResult result = new JsonResult(); //DataTable dt = new DataTable(); //dt.Columns.Add("lat", typeof(int)); //dt.Columns.Add("lng", typeof(int)); result.JsonRequestBehavior = JsonRequestBehavior.AllowGet; List<object> list = new List<object>(); try { foreach (var temp in lnglat) { string[] t = temp.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); if (t.Length != 2) continue; int lng = Int32.Parse(t[0]); int lat = Int32.Parse(t[1]); //dt.Rows.Add(lat, lng); var q = from m in db.T_MapOffset.Where(p => p.lng == lng && p.lat == lat) select new { m.lat, m.lng, m.latoffset, m.lngoffset }; list.AddRange(q); } return Json(list); } catch { result.Data = null; } return result; } 循环集合中的单个对象调用某个方法 //public void str() //{ // var v = from e in db.T_VehicleInfo // select e.VehicleID; // foreach(var id in v) // { // string str = GetVehiclePhoto(id); // Response.Write(str+""); // } //} 字符串,DataTable public JsonResult GetListMapOffset(List<string> lnglat) { JsonResult result = new JsonResult(); DataTable dt = new DataTable(); dt.Columns.Add("lat", typeof(int)); dt.Columns.Add("lng", typeof(int)); result.JsonRequestBehavior = JsonRequestBehavior.AllowGet; List<object> list = new List<object>(); try { foreach (var temp in lnglat) { string[] t = temp.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); if (t.Length != 2) continue; int lng = Int32.Parse(t[0]); int lat = Int32.Parse(t[1]); dt.Rows.Add(lat, lng); var q = from m in db.T_MapOffset.Where(p => p.lng == lng && p.lat == lat) select new { m.lat, m.lng, m.latoffset, m.lngoffset }; list.AddRange(q); } return Json(list); } catch { result.Data = null; } return result; } 字符串,数组 public JsonResult GetListForPlan(string bsids) { string[] list = bsids.Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries); if(list.Length<=0) { return null; } int[] ids=new int[list.Length]; int i = 0; foreach (string s in list) { ids[i] = int.Parse(s); i++; } var q = from e in db.T_BaseStation join a in ids on e.BSID equals a select new { BSID = e.BSID, Name = e.Name, Code = e.Code, RoomID = e.RoomID, Building = e.Building, Type = e.Type, Address = e.Address, LocationInBuilding = e.LocationInBuilding, Longitude = e.Longitude, Latitude = e.Latitude, LonLatUpdateDate = e.LonLatUpdateDate, VIP = e.VIP, InspectorArrivalTime = e.InspectorArrivalTime, PowerGenerationArrivalTime = e.PowerGenerationArrivalTime, LastInspectTime = e.LastInspectTime, BestInspectCircle = e.BestInspectCircle, AddUser = e.AddUser, AddTime = e.AddTime, MonitoringInstalled = e.MonitoringInstalled, ResponsibleUser = e.ResponsibleUser, DepartmentID = e.DepartmentID, Network = e.Network }; return Json(q, JsonRequestBehavior.AllowGet); }