Tag: linq

在Entity Framework中动态添加where子句

我有这个sql语句 SELECT userID from users WHERE (name=’name1′ AND username=’username1′) OR (name=’name2′ AND username=’username2′) OR (name=’name3′ AND username=’username3′) OR ………. (name=’nameN’ AND username=’usernameN’) 我可以使用LINQ在entity framework中实现此语句吗?

是否有LINQ函数用于获取字符串列表中最长的字符串?

是否有一个LINQ函数,或者必须自己编码,如下所示: static string GetLongestStringInList() { string longest = list[0]; foreach (string s in list) { if (s.Length > longest.Length) { longest = s; } } return longest; }

如何使用datacontext进行事务处理

我可以使用带有datacontext的事务,以便在出错后可以回滚上下文的状态吗? 如果是这样,那怎么办?

使用LINQ to SQL进行分页搜索结果

使用LINQ to SQL获取分页结果的最佳模式是什么? 我有以下情况: 假设我想按描述搜索项目表。 我可以轻松地做到: public IQueryable FindItemsByDescription(string description) { return from item in _dc.Items where item.Description.Contains(description); } 现在,对这个结果集进行分页的最佳方法是什么? 我应该在执行此操作之前执行计数查询以查找结果集大小,然后根据我的需要限制此查询吗? 我觉得这是要走的路。 我应该执行完整查询,从数组大小中获取计数并仅返回此数组中的分页子集吗? 如果结果集足够大,我觉得这会浪费很多时间……或者LINQ to SQL在这里做了些什么? 是否有LINQ to SQL常用模式来执行此操作? 编辑:我必须澄清一件小事。 我知道Take和Skip方法。 但是,在使用Take和Skip之前,我应该如何获得查询将检索的结果总数 ?

使用linq-to-sql进行批量插入

我有一个看起来像这样的查询: using (MyDC TheDC = new MyDC()) { foreach (MyObject TheObject in TheListOfMyObjects) { DBTable TheTable = new DBTable(); TheTable.Prop1 = TheObject.Prop1; ….. TheDC.DBTables.InsertOnSubmit(TheTable); } TheDC.SubmitChanges(); } 此查询基本上使用linq-to-sql将列表插入到数据库中。 现在我在网上看到L2S不支持批量操作。 我的查询是通过一次插入每个元素还是一次写入所有元素来工作的? 谢谢你的澄清。

如何使用LINQ进行分组并按特定列排序

更新 :添加了一个新的列,将日期和时间列组合成字符串字段到DateTimeCombined列,这是一个DateTime字段 那么LINQ应该做的是按名称列分组,并为每个具有最早日期+时间的名称获取行。 然后它应该为名称添加行的其余部分。 DataTable init: dataT = new DataTable(); dataT.Columns.Add(“Date”, typeof(string)); dataT.Columns.Add(“Time”, typeof(string)); dataT.Columns.Add(“Day”, typeof(string)); dataT.Columns.Add(“Name”, typeof(string)); dataT.Columns.Add(“Place”, typeof(string)); dataT.Columns.Add(“DateTimeCombined”, typeof(DateTime)); dataT.Columns.Add(“NameMessage”, typeof(string)); 所以这是起始DataTable(默认检索): Date Time Day Name Place DateTimeCombined NameMessage 6/29/2017 8:30AM MON John Orlance 6/29/2017 8:30:00 AM 6/29/2017 8:40AM MON John Orlance 6/29/2017 8:40:00 AM 6/29/2017 8:50AM MON John Orlance 6/29/2017 8:50:00 […]

使用LINQ的父/子Xml到DTO对象模型

鉴于以下DTO定义: [Serializable] internal class OrderCollection : List { } [Serializable] internal class Order { public string OrderId { get; set; } public OrderDetailCollection OrderDetails { get; set; } } [Serializable] internal class OrderDetailCollection : List { } [Serializable] internal class OrderDetail { internal OrderDetail() { } /*public string ParentOrderId { get; set; }*/ public string […]

LINQ中的数据冲突

使用SubmitChanges()进行更改时,LINQ有时会因ChangeConflictExceptionexception而导致错误消息Row not found or changed ,而没有任何指示冲突的行或具有冲突的更改的字段,当另一个用户具有冲突时更改了该行中的一些数据。 有没有办法确定哪一行有冲突以及它们出现在哪些字段中,还有一种方法可以让LINQ忽略该问题并简单地提交数据吗? 此外,是否有人知道当行中的任何数据发生更改时,或者仅在LINQ尝试更改的字段中更改了数据时是否发生此exception?

使用我自己的LINQ to Entities方法

我有一个LINQ项目,我想在其中使用我自己的方法。 这个NoWhiteSpaces方法应该返回没有空格的上部字符串。 public static class LittleExtensions { public static string NoWhiteSpaces(this String s) { return Regex.Replace(s, @”\s”, string.Empty).ToUpper(); } } 当我想在LINQ中使用此方法时,如下所示: static void GetHaendler() { using (var riaService = new gkmRia()) { var hladany = “someone”; var haendlers = from hndlr in riaService.GetGkmHaendlerOutlet() where hndlr.NameOutlet.NoWhiteSpaces() == hladany.NoWhiteSpaces() select hndlr; Console.Write(haendlers.First().NameOutlet); } } 我收到此错误消息: LINQ to […]

如何在linq lambda表达式中使用ToShortDateString?

我需要在一个linq查询中使用lambda表达式调用ToShortDateString: toRet.Notification = Repositories .portalDb.portal_notifications.OrderByDescending(p => p.id) .FirstOrDefault(p => p.date.ToShortDateString() == shortDateString); 但我得到错误: System.Data.Entity.dll中出现“System.NotSupportedException”类型的exception,但未在用户代码中处理 附加信息:LINQ to Entities无法识别方法’System.String ToShortDateString()’方法,并且此方法无法转换为存储表达式。 考虑到我确实需要使用ToShortDateString() ,我该怎么办? 谢谢。