Converting Linq result to XML String

linq查询得到的结果为Entity,返回给FLex需要转换成XML格式(我目前用的webservice的笨方式),所以需要将Entity转换成XML,本来以为有直接的转换方法,Goo了好久,发现有个老外和我想的一样:先将Entity填充到一个DataSet中,然后利用DataSet的GetXml来返回,呵呵,够麻烦的,应该会有更好的方法,但是我还不知道,先将就着用这个方法了。

        var q = db.Customers.First(p => p.cust_sys_id == id);
        DataTable dt = new DataTable();
        foreach (var col in q.GetType().GetProperties())
            dt.Columns.Add(col.Name, col.PropertyType);
        DataRow dr = dt.NewRow();
        foreach (var col in q.GetType().GetProperties())
            dr[col.Name] = col.GetValue(q, null);
        dt.Rows.Add(dr);
        DataSet ds = new DataSet();
        ds.Tables.Add(dt);
        return ds.GetXml(); 

  

//into 13/10/2010

  [WebMethod]
    
public string getCustList()
    {
        var q 
= from c in db.Customers
                orderby c.m_date descending
                select c;
        DataSet ds 
= new DataSet();
        
foreach (var t in q)
        {
            DataTable dt 
= new DataTable();
            
foreach (var col in t.GetType().GetProperties())
                dt.Columns.Add(col.Name);
            DataRow r 
= dt.NewRow();
            
foreach (var col in t.GetType().GetProperties())
                r[col.Name] 
= col.GetValue(t, null);
            dt.Rows.Add(r);
            ds.Tables.Add(dt);
        }
        
return ds.GetXml();
    } 


 

posted on 2010-10-11 19:35  咖啡色  阅读(194)  评论(0编辑  收藏  举报