C# 在从linq进行查询之后,是否有用于表示规范化数据的API?

C# 在从linq进行查询之后,是否有用于表示规范化数据的API?,c#,asp.net-mvc-3,linq,C#,Asp.net Mvc 3,Linq,例如,对Northwind数据库执行以下操作: http://www.servicestack.net/ServiceStack.Northwind/customers/ALFKI?format=html http://www.servicestack.net/ServiceStack.Northwind/customers/ALFKI?format=html 是否有任何东西可以读取数据库结构和关系并基于主id输出报告 显然,我正在寻找servicestack的替代方案。为此,我使用LINQP

例如,对Northwind数据库执行以下操作:

http://www.servicestack.net/ServiceStack.Northwind/customers/ALFKI?format=html http://www.servicestack.net/ServiceStack.Northwind/customers/ALFKI?format=html 是否有任何东西可以读取数据库结构和关系并基于主id输出报告

显然,我正在寻找servicestack的替代方案。

为此,我使用LINQPad的.Dump()对象可视化工具。从项目中下载LINQPad并引用.exe

然后,您将可以访问LINQPads.CreateXhtmlWriter(),该文件可以输出漂亮的对象图可视化:

只要去:

var listOfItems = DataContext.Items.ToList();

listOfItems.Dump();
以下不是我的代码,但我找不到来源,请耐心等待

使用扩展方法创建Xhtml转储并在浏览器中显示:

public static class LinqPadExtensions
{
    /// <summary>
    /// Writes object properties to HTML 
    /// and displays them in default browser.
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="o"></param>
    /// <param name="heading"></param>
    public static void Dump<T>(
        this T o,
        string heading = null
    )
    {
        string localUrl =
            Path.GetTempFileName() + ".html";
        using (
            var writer =
                LINQPad.Util.CreateXhtmlWriter(true)
        )
        {
            if (!String.IsNullOrWhiteSpace(heading))
                writer.Write(heading);
            writer.Write(o);
            File.WriteAllText(localUrl, writer.ToString());
        }

        Process.Start(localUrl);
    }
}
公共静态类LinqPadExtensions
{
/// 
///将对象属性写入HTML
///并在默认浏览器中显示它们。
/// 
/// 
/// 
/// 
公共静态无效转储(
这个,
字符串标题=null
)
{
字符串本地URL=
Path.GetTempFileName()+“.html”;
使用(
变量编写器=
LINQPad.Util.CreateXhtmlWriter(true)
)
{
如果(!String.IsNullOrWhiteSpace(标题))
写作(标题);
作者:写(o);
File.WriteAllText(localUrl,writer.ToString());
}
Process.Start(localUrl);
}
}

LINQPad实际上允许您这样做。好的是,您甚至可以导入自己的程序集,这样您就可以使用生产代码测试LINQ查询,并在窗口中显示结果。您还可以通过在LINQ查询的任何阶段调用
Dump()
来显示中间结果(只要您使用的是方法语法,不确定它在查询语法中的工作方式)。