引用ScottGu:使ExecuteQuery(sql_exp)方法真正有用的是它允许你声明以何种方式将sql表达式返回的值进行格式化。
说明:
1、IExecuteQuery<T>中T类的字段名必须与sql_exp中SQL语句的列名一样才能填充实体类。
2、执行ExecuteQuery()返回的IExecuteQuery<T>不能进行多次(两次以上)结果集查询,且读取IExecuteQuery<T>必须保持connecton open,所以考虑转化为IList<T>。
例:
- public IList<menu_info> SelectNodes(string menu_parent_id)
- {
- sqlcon.Open();
- SQLServerDBDataContext conn = new SQLServerDBDataContext(sqlcon);
- IEnumerable<menu_info> theNodes = conn.ExecuteQuery<menu_info>("select tbMenu.menu_id,tbMenu.menu_name,tbMenu.menu_parent_id,tbMenu.menu_isFun,tbMenu_Page.page_name from tbMenu left join tbMenu_Page on tbMenu.menu_id=tbMenu_Page.menu_id where tbMenu.menu_parent_id=" + menu_parent_id);
- IList<menu_info> a=new List<menu_info>();
- foreach (var t in theNodes) {
- a.Add(t);
- }
- sqlcon.Close();
- return a;
- }
实体类:
- /// <summary>
- /// 目录实体
- /// </summary>
- public class menu_info
- {
- /// <summary>
- /// 目录ID
- /// </summary>
- public int menu_id;
- /// <summary>
- /// 目录名
- /// </summary>
- public string menu_name;
- /// <summary>
- /// 目录项是否叶子
- /// </summary>
- public bool menu_isFun;
- /// <summary>
- /// 父节点ID
- /// </summary>
- public int menu_parent_id;
- /// <summary>
- /// 目录URL
- /// </summary>
- public string page_name;
- }