Questions tagged «linq»

语言集成查询(LINQ)是Microsoft .NET Framework组件,它向.NET语言添加了本机数据查询功能。请考虑在适当的时候使用更详细的标签,例如[linq-to-sql],[linq-to-entities] / [entity-framework]或[plinq]

9
与LINQ to Objects不兼容的区别
class Program { static void Main(string[] args) { List<Book> books = new List<Book> { new Book { Name="C# in Depth", Authors = new List<Author> { new Author { FirstName = "Jon", LastName="Skeet" }, new Author { FirstName = "Jon", LastName="Skeet" }, } }, new Book { Name="LINQ in Action", Authors …

5
LINQ方法的运行时复杂度(Big-O)有什么保证?
我最近已经开始使用LINQ了很多,而且我还没有真正看到任何有关LINQ方法的运行时复杂性的信息。显然,这里有许多因素在起作用,因此让我们将讨论范围限制在普通的IEnumerableLINQ-to-Objects提供程序上。此外,让我们假设任何Func以选择器/增幅器/等形式传入的都是廉价的O(1)操作。 它似乎很明显,所有的单次操作(Select,Where,Count,Take/Skip,Any/All,等)将是O(n)的,因为他们只需要步行的顺序一次; 尽管即使这样也会受到懒惰的影响。 对于更复杂的操作,事情变得更加模糊。集合类运算符(Union,Distinct,Except等)使用工作GetHashCode在默认情况下(据我所知),所以它似乎是合理的假设他们使用一个哈希表内,使这些操作为O(n)为好,一般。那使用的版本IEqualityComparer呢? OrderBy需要排序,因此最有可能我们正在查看O(n log n)。如果已经排序怎么办?如果我说怎么样OrderBy().ThenBy()并为两者提供相同的密钥怎么办? 我可以使用排序或哈希查看GroupBy(和Join)。哪有 Contains在a上为O(n)List,但在a上为O(1)HashSet -LINQ是否检查基础容器以查看其是否可以加快速度? 真正的问题-到目前为止,我一直坚信作业是高效的。但是,我可以依靠吗?例如,STL容器清楚地指定了每个操作的复杂性。.NET库规范中是否对LINQ性能有任何类似的保证? 更多问题(针对评论):并 没有真正考虑开销,但是我没想到简单的Linq-to-Objects会有很多。CodingHorror帖子谈论的是Linq-to-SQL,在这里我可以理解解析查询并使SQL增加成本-对象提供程序是否也有类似成本?如果是这样,使用声明性或函数语法有什么不同?



5
如何仅选择LINQ中具有最高日期的记录
我有一个带有以下字段的表“ lasttraces”。 Id, AccountId, Version, DownloadNo, Date 数据如下所示: 28092|15240000|1.0.7.1782|2009040004731|2009-01-20 13:10:22.000 28094|61615000|1.0.7.1782|2009040007696|2009-01-20 13:11:38.000 28095|95317000|1.0.7.1782|2009040007695|2009-01-20 13:10:18.000 28101|15240000|1.0.7.1782|2009040004740|2009-01-20 14:10:22.000 28103|61615000|1.0.7.1782|2009040007690|2009-01-20 14:11:38.000 28104|95317000|1.0.7.1782|2009040007710|2009-01-20 14:10:18.000 在LINQ to SQL中,如何才能仅获取每个AccountId的最后lasttrace(日期最高的那一个)?
117 c#  .net  linq  linq-to-sql 

5
在List <T> ForEach()中设置多个属性?
给定一个班级: class foo { public string a = ""; public int b = 0; } 然后是它们的通用列表: var list = new List&lt;foo&gt;(new []{new foo(), new foo()}); 如果我要在以下方法中分配多个属性List&lt;T&gt; ForEach(),请问下面有一种更简单的方法吗?希望我有点胖。 // one property - easy peasy list.ForEach(lambda =&gt; lambda.a="hello!"); // multiple properties - hmm list.ForEach(lambda =&gt; new Action(delegate() { lambda.a = "hello!"; lambda.b …
117 c#  linq 

5
linq,其中list包含列表中的任何一个
使用linq,如何检索其属性列表与另一个列表匹配的项目列表? 举一个简单的例子和​​伪代码: List&lt;Genres&gt; listofGenres = new List&lt;Genre&gt;() { "action", "comedy" }); var movies = _db.Movies.Where(p =&gt; p.Genres.Any() in listofGenres);
117 c#  linq 


14
如何仅比较EF中DateTime中的日期组件?
我有两个日期值,一个已经存储在数据库中,另一个由用户使用DatePicker选择。用例是从数据库中搜索特定日期。 先前在数据库中输入的值始终具有12:00:00的时间分量,而从选择器输入的日期具有不同的时间分量。 我只对日期部分感兴趣,并且想忽略时间部分。 在C#中进行这种比较的方法是什么? 另外,如何在LINQ中做到这一点? 更新:在LINQ to Entities上,以下工作正常。 e =&gt; DateTime.Compare(e.FirstDate.Value, SecondDate) &gt;= 0

4
LINQ to Entities无法识别该方法
尝试执行linq查询时出现以下错误: LINQ to Entities无法识别方法“ Boolean IsCharityMatching(System.String,System.String)”方法,并且该方法无法转换为商店表达式。 我已经阅读了很多以前的问题,人们会遇到相同的错误,如果我理解正确,那是因为LINQ to Entities要求将整个linq查询表达式转换为服务器查询,因此您不能调用外部方法在里面。我还无法将情景转换成可以正常使用的东西,而且我的大脑开始融化,所以我希望有人可以指出正确的方向。我们正在使用Entity Framework和规范模式(并且我都是新手)。 这是使用规范的代码: ISpecification&lt;Charity&gt; specification = new CharitySearchSpecification(charityTitle, charityReference); charities = charitiesRepository.Find(specification).OrderBy(p =&gt; p.RegisteredName).ToList(); 这是linq表达式: public System.Linq.Expressions.Expression&lt;Func&lt;Charity, bool&gt;&gt; IsSatisfied() { return p =&gt; p.IsCharityMatching(this.charityName, this.charityReference); } 这是IsCharityMatching方法: public bool IsCharityMatching(string name, string referenceNumber) { bool exists = true; if (!String.IsNullOrEmpty(name)) { if …

13
如何在数据库表的列中存储列表
因此,按照Mehrdad对一个相关问题的回答,我得到一个“适当的”数据库表列不存储列表的信息。相反,您应该创建另一个表,该表可以有效地保存所述列表的元素,然后直接或通过联结表链接到该列表。但是,我要创建的列表类型将由唯一项组成(与链接问题的成果不同)例)。此外,列表中的项目已明确排序-这意味着如果将元素存储在另一个表中,则每次访问它们时都必须对它们进行排序。最后,该列表基本上是原子性的,因为无论何时我想访问该列表,我都想访问整个列表,而不只是其中的一部分-因此,必须发出数据库查询以将各个部分汇总在一起似乎很愚蠢。名单。 AKX的解决方案(在上面链接)是序列化列表并将其存储在二进制列中。但这似乎也不方便,因为这意味着我必须担心序列化和反序列化。 有没有更好的解决方案?如果是没有更好的解决办法,那么为什么呢?似乎这个问题应该不时出现。 ...只是更多信息,让您知道我来自哪里。我刚开始大致了解SQL和数据库后,便开始使用LINQ to SQL,所以现在我有点被宠坏了,因为我希望处理我的编程对象模型而不必考虑对象的方式被查询或存储在数据库中。 谢谢大家! 约翰 更新:所以在得到的第一批答案中,我看到“您可以使用CSV / XML路线...但是不要!”。所以现在我正在寻找原因的解释。为我提供一些很好的参考。 另外,为了让您更好地了解自己的工作情况:在数据库中,我有一个功能表,该表将具有(x,y)对的列表。(该表还将包含其他信息,这些信息对我们的讨论没有影响。)我将永远不需要看到(x,y)对列表的一部分。而是,我将所有这些都放置在屏幕上。我将允许用户拖动节点以偶尔更改值或向图中添加更多值。

7
LINQ功能的顺序重要吗?
基本上,正如问题所述……LINQ函数的顺序是否对性能有影响?显然结果仍然必须相同... 例: myCollection.OrderBy(item =&gt; item.CreatedDate).Where(item =&gt; item.Code &gt; 3); myCollection.Where(item =&gt; item.Code &gt; 3).OrderBy(item =&gt; item.CreatedDate); 两者返回的结果相同,但LINQ的顺序不同。我意识到重新订购某些物品会导致不同的结果,我并不担心这些。我主要关心的是要知道在获得相同结果时订购是否会影响性能。而且,不仅在我进行的2个LINQ调用(OrderBy,Where)上,而且在任何LINQ调用上。
114 c#  performance  linq 

10
如何从List <T>中获取第n个项目?
我正在使用.NET 3.5,并且希望能够n从列表中获取每个* *项目。我不介意使用lambda表达式还是LINQ实现它。 编辑 看起来这个问题引起了很多争论(这是一件好事,对吧?)。我学到的主要内容是,当您认为自己知道做某事的所有方法(甚至如此简单)时,请三思!
114 c#  linq  list  lambda 

8
在数组中查找值的索引
可以使用linq以某种方式在数组中查找值的索引吗? 例如,此循环在数组中定位键索引。 for (int i = 0; i &lt; words.Length; i++) { if (words[i].IsKey) { keyIndex = i; } }
113 c#  arrays  linq 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.