小编Ste*_*eph的帖子

Linq OrderBy打破导航属性为null

使用四个表.

用户 - >具有基本用户信息,包括用户ID和 离开(int)
组 - >基本组信息,包括groupid
GroupsMembers - >表,其中包含组与其成员之间的关系,多对多关系,因此groupid和userid是列
部门 - >基本部门信息,包括deptid

我有一个fk从users表中的departmentid到departments表中的deparmtnet id.

FK从组groupid到groupsmembers groupid FK从用户userid到groupsmembers userid

这允许edmx中的组具有用户导航属性,该属性将包含该组的所有成员.

var grp = grpSource.FirstOrDefault(g => g.GroupID == groupID)
if (grp.GroupID > 0)
{
    var userQuery = from u in grp.Users
                    where !u.Deleted
                    select u;
    userQuery = userQuery.OrderBy(u => u.Department.Name);
}
Run Code Online (Sandbox Code Playgroud)

我包括Users.Department.

问题出现是因为用户不必拥有部门,因此departmentid列可以为空.如果有任何用户为departmentid为null,则orderby中断并表示u.Department为null.如果没有离开是空的,那就很有效.我需要一种基于Department.Name进行排序的方法,即使有null的离开.有什么建议?

linq-to-entities entity-framework nullable sql-order-by

21
推荐指数
1
解决办法
7990
查看次数

尝试打开安全数据库时,"所选文件不是有效的解决方案文件"错误

我最近重新构建了我的开发机器,现在使用的是Windows 7.在这台新机器上,VS 2010无法再直接从SS 2005打开sln文件.这些是有效的2010解决方案(或者自己创建的VS 2010),直到我重新运行 - 我的机器.我的同事有相同的设置,没有这个问题.

我收到的消息是"所选文件不是有效的解决方案文件".

我已经多次重建并且使用了许多VS的安装,从来没有遇到过使用VS 05,08或10从SS打开sln的问题.我以前从未见过这个.我的同事也没有遇到这个问题

我已经重新安装了SS 2005以及最新的SS更新,但没有任何效果.

VS 2010可以很好地从文件系统打开解决方案,所以它必须是SS的东西.

有任何想法吗?

编辑解决方案文件的内容:

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyProject", "MyProjectX\MyProject.csproj", "{8E519F6C-A405-43AB-ADA0-F4829ECBEFE0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyProject_BL", "MyProject_BLMyProject_BL.csproj", "{595FFFB2-5CC3-40BB-9059-32ACFAA9DEFA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LinqKit", "LINQKit\LinqKit.csproj", "{AEC98F52-83F5-488D-99EF-8AFFE7C9F6E6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyProject_DL", "MyProject_DL\MyProject_DL.csproj", "{55506B29-70A8-4556-ADF9-2553B0F18379}"
EndProject
Global
    GlobalSection(SourceCodeControl) = preSolution
        SccNumberOfProjects = 5
        SccLocalPath0 = .
        SccProjectUniqueName1 = MyProject\\MyProject.csproj
        SccProjectName1 = \u0022$/MyProject.root/MyProject/MyProject\u0022,\u0020
        SccLocalPath1 = MyProject
        SccProjectUniqueName2 = MyProject_BL\\MyProject_BL.csproj
        SccProjectName2 = \u0022$/MyProject.root/MyProject/MyProject_BL\u0022,\u0020
        SccLocalPath2 = MyProject_BL …
Run Code Online (Sandbox Code Playgroud)

visual-sourcesafe visual-studio-2010 visual-studio visual-sourcesafe-2005

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

C#中的通用方法

一般来说,通用方法对我来说都是新的.需要一个返回泛型类型的Collection的方法,但也需要一个相同泛型类型的集合

Expression<Func<GenericType, DateTime?>>[] Dates 
Run Code Online (Sandbox Code Playgroud)

参数.整个以下函数的T应该是相同的类型,所以现在我正在使用(简化版):

private static Collection<T> SortCollection<T>(Collection<T> SortList, Expression<Func<T, DateTime>>[] OrderByDateTime)
{
    return SortList.OrderBy(OrderByDateTime[0]);
}
Run Code Online (Sandbox Code Playgroud)

但我收到错误:

错误:无法从用法推断出方法'System.Linq.Enumerable.OrderBy(System.Collections.Generic.IEnumberable,System.Func)'的类型参数.尝试显式指定类型参数.

反正有没有这样做?

c# generics collections methods generic-programming

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

获取两个日期SQL之间的工作日数(星期日,星期一,星期二)

因此,对于开始日期和结束日期,我想确定这两个日期之间一周的特定日期.

那么星期一,星期二等等

我知道我可以在开始日期和结束日期之间循环并检查每一天,但差异可能是很多天.我更喜欢不需要循环的东西.有任何想法吗?(必须在SQL Server 2005+中受支持)

sql t-sql datetime sql-server-2005 sql-server-2008

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