使用四个表.
用户 - >具有基本用户信息,包括用户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的离开.有什么建议?
我最近重新构建了我的开发机器,现在使用的是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
一般来说,通用方法对我来说都是新的.需要一个返回泛型类型的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)'的类型参数.尝试显式指定类型参数.
反正有没有这样做?
因此,对于开始日期和结束日期,我想确定这两个日期之间一周的特定日期.
那么星期一,星期二等等
我知道我可以在开始日期和结束日期之间循环并检查每一天,但差异可能是很多天.我更喜欢不需要循环的东西.有任何想法吗?(必须在SQL Server 2005+中受支持)
c# ×1
collections ×1
datetime ×1
generics ×1
methods ×1
nullable ×1
sql ×1
sql-order-by ×1
t-sql ×1