我经常有这样的代码:
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?
解决潜在问题的更好方法?
我经常需要通过像领域的限制选择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行.
我怎么能这样做?有没有更好的方法来清理代码?
我创建了一个称为“联系人”的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”的联系人
还是有比使用分类法和投影更好的方法?
谢谢,
雷因哈德
我的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
?
在提交到存储库时,我在Mercurial中定义了一个钩子:
[hooks]
precommit.exportDB=exportDB.bat
Run Code Online (Sandbox Code Playgroud)
这将从我的数据库创建/更新SQL转储,该转储应包含在提交中.但是:虽然这有效,但Sql被标记为新的,但不是现在提交的变更集的一部分.如何自动包含它以使其进入已更改的文件集?
希望这有道理......
莱克哈德
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) 如果电子邮件地址格式错误,我无法本地化错误消息.
我一直收到英文信息:"请输入有效的电子邮件地址"
这是我的模特:
[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?
如果我有两个派生自基类的类,我怎样才能编写一个泛型方法,它可以操作两个类的继承属性,所以我不需要编写两个方法...
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# ×3
linq ×2
asp.net-mvc ×1
inheritance ×1
ip-address ×1
linq-to-sql ×1
mercurial ×1
netmask ×1
oop ×1
orchardcms ×1
t-sql ×1