小编dev*_*evi的帖子

C# - 使用属性名称作为字符串由属性排序的代码

当我将属性名称作为字符串时,对C#中的属性进行编码的最简单方法是什么?例如,我想允许用户通过他们选择的属性(使用LINQ)来订购一些搜索结果.他们将在UI中选择"order by"属性 - 当然是字符串值.有没有办法直接使用该字符串作为linq查询的属性,而不必使用条件逻辑(if/else,switch)将字符串映射到属性.反射?

从逻辑上讲,这就是我想做的事情:

query = query.OrderBy(x => x."ProductId");
Run Code Online (Sandbox Code Playgroud)

更新:我最初没有指定我正在使用Linq to Entities - 看起来反射(至少GetProperty,GetValue方法)不会转换为L2E.

.net c# linq linq-to-entities

72
推荐指数
6
解决办法
4万
查看次数

确定共享点页面的显示模式

在尝试找到好的解决方案时,我有很多次这个问题并且很无聊.不明白为什么微软不包括可以轻松确定显示页面模式的方法:"正常显示"或"设计模式".它有许多检查不同变量的建议,但它不能唯一地说明设计页面在不同类型的页面(webpart页面和wiki页面)和回发与否.

终于累了我,我写这个:

    public static bool IsDesignTime()
    {
        if (SPContext.Current.IsDesignTime) return true;

        if (HttpContext.Current.Request.QueryString["DisplayMode"] != null)
            return true;

        var page = HttpContext.Current.Handler as Page;

        if(page == null) return false;

        var inDesign = page.Request.Form["MSOLayout_InDesignMode"];
        var dispMode = page.Request.Form["MSOSPWebPartManager_DisplayModeName"];
        var wikiMode = page.Request.Form["_wikiPageMode"];
        var we = page.Request.Form["ctl00$PlaceHolderMain$btnWikiEdit"];

        if (inDesign == null & dispMode == null) return false; //normal display

        if (we == "edit") return true; //design on wiki pages

        if (page is WikiEditPage & page.IsPostBack & inDesign == "" & dispMode == "Browse" …
Run Code Online (Sandbox Code Playgroud)

c# asp.net sharepoint-2010

5
推荐指数
3
解决办法
2万
查看次数

标签 统计

c# ×2

.net ×1

asp.net ×1

linq ×1

linq-to-entities ×1

sharepoint-2010 ×1