小编rei*_*ard的帖子

如何在扩展方法中键入是否存在属性?

我经常有这样的代码:

var stRecs = db.<someTable>
             .Where(a => a.DepID == depID)
Run Code Online (Sandbox Code Playgroud)

选择单个记录,但是如果depID == 0我想取回所有记录.

我正在考虑创建一个扩展方法"WhereDepID_OrAll",就像

public static IQueryable<T> WhereDepID_OrAll<T>(this IQueryable<T> source)
        where T: // is what?
{
    if(depID > 0) { return source.Where(a => a.depID == depID); }
    else return source.Where(a => a);
}
Run Code Online (Sandbox Code Playgroud)

现在我的基本问题是:我有几个表有depID - 我该如何设置Where T:
该方法将如何确定表是否具有depID?

解决潜在问题的更好方法?

c# linq extension-methods

9
推荐指数
1
解决办法
1769
查看次数

Linq扩展方法

我经常需要通过像领域的限制选择publishStart,publishEnd,active

我在几个不同的表中有这些字段.因此,只应选择行

a: active == true;
b: publishStart < now;
c: publishEnd > now;
Run Code Online (Sandbox Code Playgroud)

所以,例如:

db.myTable.SingleOrDefault(a => (a.ID == _theID 
          //now the active and start-end part:            
                      && ((a.publishEnd > DateTime.Now) || (a.publishEnd == null))
                      && ((a.publishStart <= DateTime.Now) || (a.publishStart == null))
                      && a.active == true));
Run Code Online (Sandbox Code Playgroud)

这有点冗长,所以我想知道是否有可能创建一个(扩展名?) - 方法,如:

db.myTable.SingleOrDefault(a => (a.ID == _theID).isActive()
Run Code Online (Sandbox Code Playgroud)

其中isActive()提供了上述代码段的3行.

我怎么能这样做?有没有更好的方法来清理代码?

c# linq extension-methods linq-to-sql

7
推荐指数
1
解决办法
1万
查看次数

果园:投影查询过滤分类术语

我创建了一个称为“联系人”的Content-Type(诸如“姓名”,“电子邮件...”之类的字段)。

我也有两个分类法:

Location (N.Y, Denver, Washington...)
Department(Computers, Hardware, Software...)
Run Code Online (Sandbox Code Playgroud)

我在“联系人”类型中都包含了

现在,我想找到一种方法来添加参数化查询以按位置和部门进行过滤。

我可以编写带有位置过滤器的查询-但找不到动态设置位置的方法。(只能从列表中选择)

理想情况下,如果页面是http://server.com/Denver,则该页面应列出丹佛的所有部门-带有链接

因此http://server.com/Denver/Hardware应该列出所有带有分类术语“ Denver”和“ Hardware”的联系人

还是有比使用分类法和投影更好的方法?

谢谢,

雷因哈德

orchardcms

5
推荐指数
0
解决办法
1255
查看次数

T-Sql:检查IP是否与网络掩码匹配

我的SQL-Server数据库将IP网络掩码存储为二进制.我需要一种方法来匹配这些给定的IP

例如,是192.168.21.5存储在DB中的网络掩码的一部分吗?

二进制表示192.168.21.5:

11000000.10101000.00010101.00000101 (without the dots)
Run Code Online (Sandbox Code Playgroud)

存储在DB中的网络掩码是:binary(4)和tinyint字段:

11000000.10101000.00010101.00000000 / 24
Run Code Online (Sandbox Code Playgroud)

(这将是:) 192.168.21.0 /24所以,前24位192.168.21.5必须匹配数据库中的记录.

我怎么才检查n二进制字段的第一位(类似于LEFT(text, 24))?

有没有聪明的方法来做到这一点,也许是按位AND

t-sql bit-manipulation ip-address netmask

2
推荐指数
1
解决办法
2895
查看次数

mercurial:包括precommit-changed文件

在提交到存储库时,我在Mercurial中定义了一个钩子:

[hooks]
precommit.exportDB=exportDB.bat
Run Code Online (Sandbox Code Playgroud)

这将从我的数据库创建/更新SQL转储,该转储应包含在提交中.但是:虽然这有效,但Sql被标记为新的,但不是现在提交的变更集的一部分.如何自动包含它以使其进入已更改的文件集?

希望这有道理......

莱克哈德

mercurial mercurial-hook

2
推荐指数
1
解决办法
586
查看次数

MVC 4:自定义路线

ASP.NET MVC 4网站.

有一个名为"Locations"的数据库表,它只包含三个可能的位置(例如"CA","NY","AT")默认路由为:

http://server/Location/  --- list of Locations
http://server/Location/NY --- details of NY-Location
Run Code Online (Sandbox Code Playgroud)

如何在没有/ Location/ - 位的情况下创建自定义路由?(我发现它更好一点)

以便

http://server/NY - details of NY
http://server/AT - details of AT
.... etc...
Run Code Online (Sandbox Code Playgroud)

http://server/Location  --- list of Locations
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc-routing asp.net-mvc-4

2
推荐指数
1
解决办法
5542
查看次数

mvc4电子邮件验证本地化错误消息

如果电子邮件地址格式错误,我无法本地化错误消息.

我一直收到英文信息:"请输入有效的电子邮件地址"

这是我的模特:

    [Required(ErrorMessage = "Ihre Email-Adresse fehlt!")]
    [Display(Name = "Ihre Email Adresse")]
    [DataType(DataType.EmailAddress, ErrorMessage = "Ungültige Email-Adresse")]
    [RegularExpression(@"[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}", ErrorMessage = "Ungültige Email-Adresse")]
    public string From { get; set; }
Run Code Online (Sandbox Code Playgroud)

如果输入了NO地址,则显示德语消息,但如果输入了无效的地址,则会显示英语消息.

如您所见,我尝试了两种方法 - DataType和RegularExpression-Annotation中的ErrorMessage.

当地址无效时,如何呈现本地化的ErrorMessage?

asp.net-mvc asp.net-mvc-4

2
推荐指数
1
解决办法
7742
查看次数

将base-type传递给方法

如果我有两个派生自基类的类,我怎样才能编写一个泛型方法,它可以操作两个类的继承属性,所以我不需要编写两个方法...

abstract class BaseClass
{
    public int Id { get; set; }
    public string slug { get; set; }
}

public class State:BaseClass
{
    public string StateName{ get; set; }
    public string Description { get; set; }
}

public class City:BaseClass
{
    public string TownName { get; set; }
    public string someOtherProperty{ get; set; }

}
Run Code Online (Sandbox Code Playgroud)

"通用"方法:

public string Slugify( ?????BaseClass???? record)
{
    return record.slug = "...return...something...";
}
Run Code Online (Sandbox Code Playgroud)

调用如:

string a = Slugify(my_State_object); <--- not working
string b = Slugify(my_City_object); …
Run Code Online (Sandbox Code Playgroud)

c# oop inheritance

-2
推荐指数
1
解决办法
192
查看次数