Questions tagged «linq»

语言集成查询(LINQ)是一个Microsoft .NET Framework组件,它为.NET语言添加了本机数据查询功能,尽管存在Java,PHP,JavaScript和ActionScript的端口。

5
for vs.foreach与LINQ
当我在Visual Studio中编写代码时,ReSharper(上帝保佑它!)经常建议我以更紧凑的foreach形式更改旧式的for循环。 通常,当我接受此更改时,ReSharper会往前走一步,建议我以闪亮的LINQ形式再次更改它。 因此,我想知道:这些改进是否有真正的优势?在非常简单的代码执行中,我看不到任何速度提升(显然),但是我可以看到代码变得越来越不可读...所以我想知道:值得吗?
86 c#  linq 

11
为什么使用抽象(例如LINQ)如此禁忌?[关闭]
我是一个独立承包商,因此,我每年要面试3-4次新演出。我现在正处于那个周期之中,尽管我觉得面试进行得很顺利,但还是被拒绝了。今年我发生了两次相同的事情。 现在,我不是一个完美的人,而且我不希望每个组织都适合。就是说,我的平均命中率比平时低,所以我礼貌地向我的最后一个面试官询问一些建设性的反馈意见,他答应了! 根据访问者的说法,最主要的是,我似乎过于倾向于使用抽象(例如LINQ),而不是倾向于较低级别的有机增长算法。 从表面上看,这是有道理的-实际上,这也使其他拒绝也有意义,因为我在那些访谈中也对LINQ感到不满,而且访调员似乎对LINQ并不了解很多(即使他们是.NET)。伙计们)。 因此,现在我要提一个问题:如果我们应该“站在巨人的肩膀上”并使用我们可以使用的抽象(如LINQ),那么为什么有些人认为它是忌讳的呢?如果代码无需花费额外成本即可达到相同的目标,那么将代码“下架”是否有意义? 在我看来,LINQ,即使它是一种抽象,也只是对为实现完全相同的目的而编写的所有相同算法的抽象。只有性能测试可以告诉您您的自定义方法是否更好,但是如果LINQ之类的东西满足要求,为什么首先要编写自己的类呢? 我的意思不是在这里专注于LINQ。我敢肯定,JAVA世界具有可比性,我只是想知道为什么有些人对使用他们自己未编写的抽象的想法感到如此不舒服。 更新 正如Euphoric指出的那样,在Java世界中,没有任何东西可以与LINQ相提并论。 因此,如果您是在.NET堆栈上进行开发,为什么不总是尝试使用它呢?人们是否可能不完全了解它的作用?

10
LINQ和Lambda表达式的使用会导致代码可读性降低吗?[关闭]
我正在与Linq的同事讨论,我将在此处复制: 同事:让我们在这里诚实。Linq语法很烂。这是令人困惑和不直观的。 我:哦,比T-SQL更令人困惑吗? 同事:嗯,是的。 我:它具有相同的基本部分,选择,位置和来源 同事:对我来说,Linq是关系+ OO的混蛋。同事:不要误会我的意思-它功能强大,但是他们将SQL重新定位为使用agains对象集合。 我认为使用Linq + Lamda的功能非常强大(他同意),并且还使代码更易于阅读(他不同意这一点): pickFiles = from f in pickFolder.GetFiles("*.txt") where ValidAuditFileName.IsMatch(f.Name) select f; 要么 var existing = from s in ActiveRecordLinq.AsQueryable<ScannedEntity>() where s.FileName == f.FullName && s.DocumentType != "Unknown" select s; 或(此处为VB代码) Dim notVerified = From image In images.AsParallel Group Join verifyFile In …

13
期望Any()* not *引发null引用异常是否不合理?
当你创建一个扩展方法就可以了,当然,调用它null。但是,不像一个实例方法调用,调用它在空不具有扔NullReferenceException- >您必须检查和手动把它。 为了实施Linq扩展方法,Any()Microsoft决定他们应该抛出一个ArgumentNullException(https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/AnyAll.cs)。 我不得不写信 if( myCollection != null && myCollection.Any() ) 作为此代码的客户端,我期望eg ((int[])null).Any()应该返回false吗?

9
LINQ样式首选项[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我每天都在编程中经常使用LINQ。实际上,我很少(如果有的话)使用显式循环。但是,我发现我不再使用类似SQL的语法。我只是使用扩展功能。所以宁愿说: from x in y select datatransform where filter 我用: x.Where(c => filter).Select(c => datatransform) 您更喜欢哪种LINQ风格,团队中的其他人对此感到满意?
21 c#  coding-style  linq 

6
通过不缓存结果的方式实现LINQ有什么好处?
对于使用LINQ弄湿脚的人来说,这是一个众所周知的陷阱: public class Program { public static void Main() { IEnumerable<Record> originalCollection = GenerateRecords(new[] {"Jesse"}); var newCollection = new List<Record>(originalCollection); Console.WriteLine(ContainTheSameSingleObject(originalCollection, newCollection)); } private static IEnumerable<Record> GenerateRecords(string[] listOfNames) { return listOfNames.Select(x => new Record(Guid.NewGuid(), x)); } private static bool ContainTheSameSingleObject(IEnumerable<Record> originalCollection, List<Record> newCollection) { return originalCollection.Count() == 1 && newCollection.Count() …

1
单元测试:Linq的延迟断言
可以添加这样的延迟断言吗 var actualKittens = actualKittens.Select(kitten => { Assert.IsСute(kitten); return kitten }); 为什么?因此,即使使用期望实现实例化的语句,我也可以仅迭代一次: CollectionAssert.AreEquivalent(expectedKittens, actualKittens.ToList()); 而且它可能不仅是Select,而且是定义了迭代器且具有大量检查和逻辑(例如,一些计数和过滤)的方法。 令人怀疑的种子是在测试失败的情况下读取和调试此类代码的复杂性。

7
相当于Linq的最佳Java是什么?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 Java中是否有任何库可以提供Linq的功能?
17 java  linq 

5
MVC,WCF,EF,LINQ-是我吗?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 8年前关闭。 ...还是事情变得越来越复杂? 在我看来,这些天您需要了解很多知识,才能“正确”开发MS Web应用程序。在糟糕的过去,我们并没有更好的了解,我们有了数据库表,ASP.NET,ADO.NET,并且您使用相对简单的概念构建了一个Web应用程序。 如今,似乎有很多框架可以“帮助”您“正确”地完成工作,但是我不认为这会使事情变得更容易和更好。我有这种感觉,我会成为少数,但是还有其他人认为事情有点发疯了吗?


8
LINQ高级面试问题[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 5年前关闭。 我正在为高级程序员准备面试问题中的LINQ部分。LINQ中最有趣的问题包括哪些?又为什么呢?
16 c#  .net  interview  linq 

5
XSLT和可能的替代品
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 6年前关闭。 我看过XSLT,它可以将一个XML文件转换为另一个XML文件(HTML等)。现在,尽管我看到XSLT(作为一种标准化且使用过的工具)有很多好处,但出于以下几个原因,我还是不愿意 XSLT处理器似乎非常庞大/资源匮乏 XML对于编程来说是一个糟糕的表示法,这就是XSLT的全部含义。 它不想在这里拖拉XSLT,尽管我只是想指出我不喜欢XSLT的原因,以使您了解我对替代产品的期望。 有一些Lisp背景知识,我想知道是否有一些基于Lisp的树结构转换的更好方法。我看到过对DSSSL的引用,可悲的是,大多数关于DSSSL的链接都已失效,因此查看一些说明它的代码已经具有挑战性。是否仍在使用DSSSL?我记得在签出docbook内容时我曾经安装过openjade。 Jeff Atwood的博客文章似乎暗示使用Ruby而不是XSLT。 在非xml编程语言中,是否有任何明智的方式来进行类似于XSLT的XML转换?我愿意接受输入 有用的脚本语言库,可促进XML转换 特别是(但不限于)类似Lisp的转换语言或Ruby等。 到目前为止,我发现了一些东西: 网上有几个地方指出Linq是一种可能的选择。通常,我会进行任何类型的分类,也包括那些拥有最佳XSLT经验的分类。 对于方案http://cs.brown.edu/~sk/Publications/Papers/Published/kk-sxslt/和http://www.okmij.org/ftp/Scheme/xml.html
15 xml  lisp  linq  xslt 

4
linq是否比表面上的效率更高?
如果我写这样的话: var things = mythings .Where(x => x.IsSomeValue) .Where(y => y.IsSomeOtherValue) 是否与以下内容相同: var results1 = new List<Thing>(); foreach(var t in mythings) if(t.IsSomeValue) results1.Add(t); var results2 = new List<Thing>(); foreach(var t in results1) if(t.IsSomeOtherValue) results2.Add(t); 还是在幕后有一些更像这样的魔术: var results = new List<Thing>(); foreach(var t in mythings) if(t.IsSomeValue && t.IsSomeOtherValue) results.Add(t); 还是完全不同?
13 c#  linq 

1
为什么命令式编程比函数式编程更受青睐?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 背景:我是函数式编程的支持者,他在VB.NET商店工作,那里的主流思维模型是命令式编程。作为我们系统的基础是WinForms,我可以理解我们不会完全摆脱命令式编程,但是我仍然尽可能尝试使用FP(主要是通过Linq),因为我相信它的优点。 针对FP的争论和反议 可能会注意到,流利的Linq效率不如命令式效率高,因为这种样式将一个序列处理为另一个序列并重复该序列。通常,与命令式方法相比,它需要花费更多的遍数,而命令式方法可以更好地进行优化以避免序列中的重复遍历。因此,主管无法理解为什么我会选择一种明显“效率较低”的功能方法。 反对意见:我认为尽管有时它在CPU周期方面效率较低,但我认为它更人性化且易于理解,因为每一行在序列中仅做一件事。在我看来,这就像一条装配线,每个人在他的工作岗位上只能做一份工作。我觉得效率的微不足道的折衷通过代码的关注点得到了很好的补偿。 我在商店里听到的另一个反对FP的论点是,调试起来更困难-是的。跳过Linq代码并不容易。而且我有时确实必须解开方法链,以便更好地关注和剖析我无法立即发现的问题。 _Counter-argument:尽管在大多数情况下我对此没有疑问,因为我认为函数样式在其读取方式以及函数链中引发错误时更具声明性,我通常可以立即发现问题。 我的问题 我一直在尝试在我们的商店中推广实用风格,但我觉得自己没有取得进展。我已经完成了两种编程风格,直到最近才涉足Haskell。尽管有多年的命令性经验,但是现在我在JavaScript中常规使用FP,但在我看来,它已经发展起来。当我将它与如果我坚持命令式风格时可能会做的事情进行比较时,它在我的核心中留下了正确的音符。我已经对功能思维,功能组成进行了重新训练。 我无法理解的是,要说服其他人相信FP的优点是多么困难。 例如,我店里的开发人员确实使用Linq,但是我认为他们通常在处理域数据的上下文中使用它。我在更一般的意义上使用它,并且在我处理序列/列表或持久性数据结构时更喜欢它。我无法说服我的队友扩大对Linq的使用。 我想了解的是导致开发人员不喜欢FP的原因。 我想从一个对FP有丰富经验但决定采用命令式风格的人那里得到一个答案。是什么驱使我们决定必须使用命令而不是使用功能? 这是另一个示例,重点介绍了命令式和函数式编程之间的区别。 我SelectedRows在Linq中这样写了网格的方法: Public Property SelectedRows() As DataRow() Implements IDataSourceControl.SelectedRows Get Return Me.ugrBase.Selected.Rows. OfType(Of Infragistics.Win.UltraWinGrid.UltraGridRow)(). Select(Function(ugr) ugr.ListObject). OfType(Of DataRowView)(). Select(Function(drv) drv.Row). ToArray End Get 但是,这种代码风格使我们的一些开发人员感到不舒服,因此我们的领导将其改写为更加熟悉的代码: Public Property SelectedRows() As DataRow() Implements IDataSourceControl.SelectedRows Get Dim plstRows As …

3
LINQ适用于哪些问题域?
每次我在C#的Stack Overflow上看到一个问题时,都会看到至少一个或两个答案可以解决LINQ问题。通常,声誉很高的人似乎像专家一样使用LINQ。 所以我的问题是,LINQ应该用于哪个问题域? 还要注意:是否有避免使用的目的?数据集的大小是否会影响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.