Tag: linq to sql

使用LINQ比较查询中的日期

我有一个Linq查询返回到var类型myQry var myQry = from ….. 这是一个很大的linq返回我需要进一步过滤的所有记录。 在我的一个if条件中,我有一个像这样运行的filter来检查日期。 我需要检查名称是否包含输入的名称,并确切地匹配生日。 我尝试了这个编译和运行,但没有正常工作 myQry.Where(x => x.FirstName.Contains(strName) && DateTime.Compare( x.BirthDt, searchDt)>=0).ToList() 然后我尝试了这个,它抛出exception“DbArithmeticExpression参数必须有一个数字公共类型” myQry.Where(x => x.FirstName.Contains(strName) && (x.BirthDt- searchDt).Days == 0).ToList(); 对于我在查询中使用where子句时的这种情况,进行日期比较的最佳方法是什么? LinQ查询的where子句中不允许进行哪些操作? 谢谢你的时间…

将SQL CASE WHEN语句转换为C#

我是暑期编程实习的第一周,他的任务是使用LINQPad将SQL Server 2008语句转换为C#。 一旦我这样做并使其正常工作,我可以将其输入VS并根据需要进行调整。 问题是我运行SQL语句我不知道如何转换。 在我的C#类中,我们没有将SQL语句转换为C#,我们只创建了一个字符串变量,将SQL语句分配给变量,然后将该变量赋值给OleDbCommand对象。 我的导师在这个漫长的周末度过了rest日,我几乎独自一人,对于该怎么做并且需要一些帮助毫无头绪。 有几十个喜欢这个,如果我能看到如何做一个,我可以想出其余的。 这是SQL语句: ,[hrs].{Hours] – SUM( CASE WHEN [UnitState].[UnitStateTye] ‘ACTIVE’ THEN [Allocation].[AllocatedEnergyMwh] ELSE 0 END / CAST([Unit].[NetDependableCapacity] AS FLOAT)) AS SH 我很确定这是一个if语句: if [UnitState].[UnitStateType] does not equal active then SH equals [hrs].[Hours] minus the the sum of [Allocation].[AllocatedEnergyMwh] / (float)[Unit].[NetDependableCapacity]. else SH = [hrs].[Hours] 我尝试了以下代码,我认为这不会起作用但需要从某个地方开始: var results = (from […]

LINQ查询出生日期以获得年龄

我正在对员工的出生日期进行查询(在northwind db中),我希望得到他们的年龄。 我怎么做? private void Form1_Load(object sender, EventArgs e) { using (NorthWindDataContext dataContext = new NorthWindDataContext()) { DateTime today = DateTime.Today; var q1 = from z in dataContext.Employees select new { z.FirstName, today-z.BirthDate <—- problem here }; dataGridView1.DataSource = q1; } } 在我的最终网格中,我想要年龄列。 birthdate = 29/05/1969(示例)

C#linq to sql – 动态选择表

我有以下场景:有一个数据库每年生成一个新的logTable。 它始于2001年,目前有11张桌子。 它们都具有相同的结构,因此具有相同的字段,索引,pk等。 我有一些叫做管理器的类 – 顾名思义 – 管理这个DB上的每个操作。 对于每个不同的表我有一个经理,除了这个logTable,我只有一个经理。 我已经阅读了很多内容并尝试了不同的东西,例如使用ITable动态获取表或者我的所有表都实现的接口。 不幸的是,我失去了强类型属性,因此我无法进行任何搜索或更新或任何事情,因为我无法使用logTable.Where(q=> q.ID == paramId) 。 考虑到这些表具有相同的结构,从2010开始搜索日志的查询可以是从2011年开始搜索日志的查询。 我只是问这个,因为我不想为每个表重写相同的代码,因为它们在结构上是相同的。 编辑 我正在使用Linq to SQL作为我的ORM。 这些表使用所有数据库操作,而不仅仅是选择。

Linq lambda表达式中的布尔短路评估

我有以下Linq lambda表达式: private IEnumerable GetSubjectList() { User user = db.Users.Find(WebSecurity.CurrentUserId); return db.RequiredSubjects.Where(r => !r.Subject.Name.Contains(“Home”)) .GroupBy(r => r.Subject) .OrderByDescending(r => r.Count()) .Select(r => new SubjectSelectorSubjectGroup() { SubjectId = r.Key.SubjectId, SubjectName = r.Key.Name, IsInFavourites = HttpContext.Current.Request.IsAuthenticated && (user.Elective1 != null && user.Elective1.SubjectId == r.Key.SubjectId || user.Elective2 != null && user.Elective2.SubjectId == r.Key.SubjectId || user.Elective3 != null && […]

当where子句与NULL值进行比较时,LINQ-to-SQL查询不返回行

让我们考虑一个包含2列的表:ID(int)和Role(字符串)。 两者都可以为空。 现在假设两列中的数据是: ID Role — —- 1 NULL 2 Admin 查询如下所示: List t1 = ( from a in datacontext.RoleTable where a.Role != “Admin” select a ).ToList(); 我认为上面的查询应该返回表的第一条记录,因为它的Role列不等于’Admin’,但查询返回一个空列表。 现在,当我使用此查询时: List t2 = ( from a in datacontext.RoleType where a.Role != “Admin” && a.Role == DBNull.Value.ToString() select a ).ToList(); 我得到了正确的答案。 任何人都可以告诉我为什么第一个查询不起作用。 仅供参考:如果表中第一行中的Role列更改为User而不是NULL则第一个查询可以正常工作。 我正在使用SQL Express和LINQ to SQL。

Linq to Sql – 将JOIN结果填充到List中

我不确定是否可以这样做,但这是场景。 我想把这个sql变成linq: SELECT * FROM Department d INNER JOIN Employee e ON e.DepartmentID = d.DepartmentID 部门 – 员工是一对多的关系。 我创建了一个自定义对象,我想将结果填充到其中。 public class DepartmentSummary { public Department Department { get; set; } public List Employees {get; set;} } 我想出的Linq是 var result = from d in dba.Department join e in dba.Employee d.DepartmentID equals e.DepartmentID into j1 select new […]

单个表达式中多个聚合值的Linq-to-SQL语句

如何为以下TSQL编写Linq-to-SQL语句? select count(*), sum(Amount), avg(Amount), min(Amount), max(Amount) from TableName

Enumerable.Empty ()AsQueryable已(); 此方法支持LINQ to Entities基础结构,不应在代码中直接使用

我收到运行时错误 此方法支持LINQ to Entities基础结构,不应在代码中直接使用。 描述:执行当前Web请求期间发生未处理的exception。 请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。 exception详细信息:System.InvalidOperationException:此方法支持LINQ to Entities基础结构,不应在代码中直接使用。 我试图通过在所有搜索字段上添加所有匹配的记录(将执行OR而不是AND )来生成查询而不是对每个搜索条件进行过滤。 public static IQueryable ApplySearch(this IQueryable queryable, SearchModel search) where T : class { var results = Enumerable.Empty().AsQueryable(); if (search != null) { if (search.PolicyNumber.HasValue && typeof (IPolicyNumber).IsAssignableFrom(queryable.ElementType)) { results = results.Union(queryable.SearchByPolicyNumber(search)); } if (search.UniqueId.HasValue && typeof (IUniqueId).IsAssignableFrom(queryable.ElementType)) { results = results.Union(queryable.SearchByUniqueId(search)); } if (!string.IsNullOrWhiteSpace(search.PostCode) […]

无法创建“匿名类型”类型的常量值。 在此上下文中仅支持原始类型或枚举类型

我对linq和entity framework非常linq 。 我试图解决一个问题,为什么以下不起作用。 产生的错误是“无法创建类型为’匿名类型’的常量值。在此上下文中仅支持基本类型或枚举类型。” 我已经尝试了这么多不同的方法,但仍然得到与原始类型有关的错误。 如果有人可以看看下面的代码并希望指出哪里出错,我将不胜感激。 public Entities.BikeData[] GetBikesWithExpiredSyncDeadline(int noOfDays) { using (OfficeEntities cxt = GetContext()) using (ReportingEntities RepCxt = GetReportingContext()) { Data.Repository.Abstract.IBikeRepository BikeRepos = new Data.Repository.Concrete.BikeRepository(); var details = (from sd in cxt.BikeDetails where sd.autoreminder == true && (sd.lastremindersent == null || sd.lastremindersent < EntityFunctions.AddDays(DateTime.UtcNow, noOfDays * -1)) && (sd.emailaddress != null && […]