Tag: linq

Linq的NHibernate 3.1迁移问题

我正面临从NHibernate 2.1.2 + Fluent 1.0迁移到NHibernate 3.1 + Fluent 1.2的问题: 曾经工作 : List orders = session.Linq() .Where(o => o.OrderLines.Any(ol => printStatuses.Contains(ol.PrintStatus))) .ToList(); 不再工作了 List orders = session.Query() .Where(o => o.OrderLines.Any(ol => printStatuses.Contains(ol.PrintStatus))) .ToList(); 我们收到以下错误: “无法加载类型o.OrderLines 。可能的原因:未加载或未指定程序集。” OrderLines是Order类的集合属性,类型为IList NHibernate似乎无法获得该集合的完全限定类名。 但是,查看会话工厂,我们可以看到collectionRolesByEntityParticipant字典包含OrderLine类的键,其字典值指向Order.Orderlines 。 有人解决过这个吗? 编辑: PS:我们使用自动化,以防你想知道。

OrderBy的正确行为

我遇到了令我困惑的事情,我希望看到你对此事的看法。 事实certificate,linq对sql和entity framework的威胁是连续的顺序。 以下代码仅用于示例,我并未声称它有任何意义: Linq to sql: DataClasses1DataContext db = new DataClasses1DataContext(); var result = (from c in db.Products orderby c.ProductName orderby c.UnitPrice orderby c.UnitsOnOrder select c).ToList(); 它在服务器端产生的是什么: SELECT [t0].[ProductID], [t0].[ProductName], [t0].[SupplierID], [t0].[CategoryID], [t0].[QuantityPerUnit], [t0].[UnitPrice], [t0].[UnitsInStock], [t0].[UnitsOnOrder], [t0].[ReorderLevel], [t0].[Discontinued] FROM [dbo].[Products] AS [t0] ORDER BY [t0].[UnitsOnOrder], [t0].[UnitPrice], [t0].[ProductName] 与Entity Framework进行的相同测试会生成以下内容: SELECT [Extent1].[ProductID] AS [ProductID], [Extent1].[ProductName] […]

从LINQ查询中获取第一个结果 – 当First ()成功时,为什么ElementAt (0)会失败?

我有一个方法AddStudent() ,它查找具有相同名称的学生,如果有同名学生,则从数据库返回现有学生,否则它会创建一个新学生并将其添加到数据库。 我很好奇为什么se = students.First(); 当se = students.ElementAt(0); 当我尝试从LINQ查询中获取第一个结果时失败。 这两种方法不一样吗? 该方法的完整代码如下所示。 public Student AddStudent(string name) { using (SchoolEntities db = new SchoolEntities()) { // find student with same name via LINQ var students = from s in db.StudentEntitySet where s.name == name select s; StudentEntity se = default(StudentEntity); // if student with the same name […]

迭代Linq结果时出现奇怪的缓慢

在探索最近的Linq问题时,我注意到算法似乎相当慢。 深入挖掘我注意到它不是linq代码,但结果的输出后来耗费了很长时间。 (感谢Marc Gravel顺便说一下,我已经看过了最简单的Linq。) 码: DateTime dt = DateTime.Now; Console.WriteLine(“Alg Start ” + dt.Second + “.” + dt.Millisecond); var qry = from l in Enumerable.Range(100000, 999999) let s = l.ToString() let sReversed = new string(s.Reverse().ToArray()) from i in Enumerable.Range(3, 9) let t = (l * i).ToString() where t == sReversed select new { l, i […]

以下PLINQ代码没有任何改进

我没有看到使用以下代码处理速度的任何改进: IEnumerable sortedQuotes = (from x in unsortedQuotes.AsParallel() orderby (x.DateTimeTicks) select x); 顺序版本: IEnumerable sortedQuotes = (from x in unsortedQuotes orderby (x.DateTimeTicks) select x); 我在这里错过了什么吗? 我将源集合中的项目数量从数千个改为数千万个,并且没有大小显示并行版本即将发布。 任何提示赞赏。 顺便说一句,如果有人知道更快速的排序方式(给定我指示的项目变量类型(包含项目在集合中排序的长DateTimeTicks),这也是值得欣赏的。 编辑:“有效排序” – >尽快。 谢谢

联合两个自定义类会返回重复项

我有两个自定义类, ChangeRequest和ChangeRequests ,其中ChangeRequests可以包含许多ChangeRequest实例。 public class ChangeRequests : IXmlSerializable, ICloneable, IEnumerable, IEquatable { … } public class ChangeRequest : ICloneable, IXmlSerializable, IEquatable { … } 我试图做两个ChangeRequests实例的联合。 但是,似乎没有删除重复项。 我的MSTestunit testing如下: var cr1 = new ChangeRequest { CRID = “12” }; var crs1 = new ChangeRequests { cr1 }; var crs2 = new ChangeRequests { cr1.Clone(), new ChangeRequest […]

如何使用ToString()方法将整数转换为LINQ中的字符串

当我尝试在下面的LINQ Lambda表达式中使用ToString()时,我得到一个exception,说“LINQ to Entities无法识别方法’System.String ToString()’方法,并且此方法无法转换为存储表达式。 “ query = query.Where(q => q.date.ToString().Contains(filtertext) || q.invoicenum.ToString().Contains(filtertext) || q.trans_type.ToString().Contains(filtertext) || q.charge.Contains(filtertext)); 我正在使用Linq来引诱。 使用的数据库是MySQL而不是SQL Server。 立即的帮助将受到高度赞赏。

动态LINQ查询ExpandoObject?

有没有办法使用LINQ动态查询库(System.Linq.Dynamic)根据ExpandoObject的属性评估条件? 以下代码在“ var e… ”行引发exception,说“ExpandoObject类型中不存在属性或字段’权重”: – const string TestCondition = “MyStateBag.Foo >= 50 && MyStateBag.Bar >= 100”; dynamic myStateBag = new ExpandoObject(); myStateBag.Foo = 70; myStateBag.Bar = 100; var p = Expression.Parameter(typeof(ExpandoObject), “MyStateBag”); var e = DynamicExpression.ParseLambda(new[] { p }, null, TestCondition); var result = e.Compile().DynamicInvoke(myStateBag); Assert.IsTrue(result); 替代方案是将“statebag”实现为字典,但这将导致稍微更详细的条件字符串,例如MyStateBag[“Foo”] >= 50 && MyStateBag[“Bar”] >= 100 。 […]

在C#中使用linq或lambda表达式返回一个集合加上一个值

我想返回一个集合加上一个值。 目前,我正在使用一个字段来创建一个新列表,向列表中添加一个值,然后返回结果。 有没有办法用linq或lambda表达式做到这一点? private List _chargeBreakdown = new List(); public ChargeDetail PrimaryChargeDetail { get; set; } public List ChargeBreakdown { get { List result = new List(_chargeBreakdown); result.Add(PrimaryChargeDetail); return result; } }

将一种类型的列表转换为C#3.5中另一种类型的列表

我有一个具有ID和Name属性的对象。 我有一个对象列表,但我想将其转换为包含对象名称的字符串列表。 我猜测有一些花哨的Linq方法会将对象的名称放入列表中。 List myObjectNames = myObjectList.?