When to use .First and when to use .FirstOrDefault with LINQ?

I've searched around and haven't really found a clear answer as to when you'd want to use .First and when you'd want to use .FirstOrDefault with LINQ. When would you want to use .First ? Only when you'd want to catch the exception if no results where returned? var result = List.Where(x => x == "foo").First(); And when would you want to use .FirstOrDefault ? When you&#

何时使用。首先以及何时使用.FirstOrDefault与LINQ?

我已经四处搜索,并且还没有真正找到明确的答案,以便何时使用.First以及何时想要使用带有LINQ的.FirstOrDefault 。 你想什么时候使用.First ? 只有当你想要捕捉异常,如果返回没有结果? var result = List.Where(x => x == "foo").First(); 你想什么时候使用.FirstOrDefault ? 如果你总是想要默认类型,如果没有结果? var result = List.Where(x => x == "foo").FirstOrDefault(); 就此而言,Take呢? var re

What's the difference?

Using Linq on collections, what is the difference between the following lines of code? if(!coll.Any(i => i.Value)) and if(!coll.Exists(i => i.Value)) Update 1 When I disassemble .Exists it looks like there is no code. Update 2 Anyone know why there is not code there for this one? See documentation List.Exists (Object method - MSDN) Determines whether the List(T) contains ele

有什么不同?

在集合上使用Linq,以下几行代码有什么不同? if(!coll.Any(i => i.Value)) 和 if(!coll.Exists(i => i.Value)) 更新1 当我拆解。 .Exists它看起来像没有代码。 更新2 任何人都知道为什么这里没有代码? 请参阅文档 List.Exists(对象方法 - MSDN) 确定List(T)是否包含与由指定的谓词定义的条件相匹配的元素。 这是从.NET 2.0开始的,所以在LINQ之前。 意味着与Predicate 委托一起使用,但是lambda

What's the next big thing after LINQ?

I started using LINQ (Language Integrated Query) when it was still in beta, more specifically Microsoft .NET LINQ Preview (May 2006). Almost 4 years have passed and here we are using LINQ in a lot of projects for the most diverse tasks. I even wrote my final college project based on LINQ. You see how I like it. LINQ and more recently PLINQ (Parallel LINQ) give our jobs a great boost when it

LINQ之后的下一件大事是什么?

当它仍处于测试阶段时,我开始使用LINQ(语言集成查询),更具体地说,是Microsoft .NET LINQ Preview(2006年5月)。 差不多4年过去了,我们在很多项目中使用LINQ来完成最多样化的任务。 我甚至写了我基于LINQ的最终大学项目。 你看我多喜欢它。 LINQ和最近的PLINQ(并行LINQ)为我们提供了更多的编程能力和更少的代码行,使我们获得更具表达性和可读性的代码,从而为我们的工作带来了巨大的推动力。 我一直在想LINQ后C

Should a keyword be added to C# for raising events?

Raising events in thread-safe way (in order to avoid NullReferenceException ) requires copying the event delegate before calling it: EventHandler copy = TheEvent; if (copy != null) copy(this, EventArgs.Empty); or using the null-conditional operator and Volatile.Read in C# 6 as proposed by Jon Skeet: Volatile.Read(ref TheEvent)?.Invoke(this, EventArgs.Empty); (See C# Events and Thread Safe

应该将关键字添加到C#中以提升事件吗?

以线程安全方式提升事件(以避免NullReferenceException )需要在调用事件委托之前复制该事件委托: EventHandler copy = TheEvent; if (copy != null) copy(this, EventArgs.Empty); 或者使用Jon Skeet提出的C#6中的空条件运算符和Volatile.Read : Volatile.Read(ref TheEvent)?.Invoke(this, EventArgs.Empty); (有关讨论,请参阅C#事件和线程安全性)。 这是乏味和容易出错的。 向C#中添加一个raise关键字是

Raising an event thread safely

I'm sure I've seen this around before but I'm wondering how I should raise an event thread-safely. I have a message despatch thread which looks somthing like. while(_messages > 0){ Message msg; // get next message if (MessageDispatched != null) MessageDispatched(this, new MessageDispatchedEventArgs(msg.Msg, msg.Params)); } I can see that it may be posible

安全地提高事件线程

我确信我以前见过这个,但是我想知道我应该如何安全地提出一个事件线程。 我有一个消息发送线程,看起来很像。 while(_messages > 0){ Message msg; // get next message if (MessageDispatched != null) MessageDispatched(this, new MessageDispatchedEventArgs(msg.Msg, msg.Params)); } 我可以看到,在检查之后MessageDispatched可能会变为空。 从我见过的MS博客: var handler = MessageDisp

Using a Strong Typed 'Sender'?

I fully realize that what I am proposing does not follow the .NET guidelines, and, therefore, is probably a poor idea for this reason alone. However, I would like to consider this from two possible perspectives: (1) Should I consider using this for my own development work, which is 100% for internal purposes. (2) Is this a concept that the framework designers could consider changing or updat

使用强类型的“发件人”?

我完全意识到我所提议的并不遵循.NET的指导方针,因此,仅仅因为这个原因可能是一个糟糕的主意。 不过,我想从两个可能的角度来考虑这一点: (1)我是否应该考虑将其用于我自己的开发工作,即100%用于内部目的。 (2)这是一个框架设计者可以考虑改变或更新的概念吗? 我在考虑使用使用强类型的“发件人”的事件签名,而不是将其作为当前.NET设计模式的“对象”输入。 也就是说,不是使用如下所示的标准事件签名: class P

Serialize List<T> containing List<T>

I am trying to serialize a list that contains non-system types. Below is my serialization code which is working fine on the top level. and returns a valid XmlDocument, but doesn't seem to contain anything in a inner list. I've looked around the net - and around SO - but can't seem to find anything! Any help much appreciated. Code: public static XmlDocument SerializeToXML<

序列化包含列表<T>的列表<T>

我试图序列化一个包含非系统类型的列表。 以下是我的序列化代码,它在顶层工作正常。 并返回一个有效的XmlDocument,但似乎不包含内部列表中的任何内容。 我环视网络 - 围绕着 - 但似乎无法找到任何东西! 任何帮助非常感谢。 码: public static XmlDocument SerializeToXML<T>(List<T> list, string rootElement) { XmlAttributeOverrides overrides = new XmlAttributeOverrides(); XmlAttribut

SQLite in C and supporting REGEXP

I'm using sqlite3 in C and I'd like to add support for the REGEXP operator. By default, a user defined function regexp() is not present and calling REGEXP will usually result in an error (according to the SQLite pages). How do I add a regexp function to support REGEXP ? Presumably I will do this via the sqlite3_create_function call, but I don't know what the application-defined re

C语言中的SQLite和支持REGEXP

我在C使用sqlite3 ,我想添加对REGEXP操作符的支持。 默认情况下,用户定义函数regexp()不存在,调用REGEXP通常会导致错误(根据SQLite页面)。 如何添加正则regexp函数来支持REGEXP ? 据推测,我会通过sqlite3_create_function调用来做到这一点,但我不知道应用程序定义的regexp()会是什么样子。 我可以使用regex.h的函数与sqlite3_create_function以及如何? 我传递给SQLite的任何函数都必须带有三个类型为sqlite3_con

Setting authentication header for WebBrowser control

I'm using WebBrowser control in my asp.net application to generate screenshots of web pages. I was able to generate images till I changed the application pool account. I've given the new application pool all the necessary rights and I'm able to browse my pages from IE. But when I navigate to it through the web browser control programatically I'm getting 401.2. I've setup &

为WebBrowser控件设置身份验证标头

我在我的asp.net应用程序中使用WebBrowser控件来生成网页截图。 我能够生成图像,直到我更改了应用程序池帐户。 我给了新的应用程序池所有必要的权利,并且我可以从IE浏览我的页面。 但是当我通过Web浏览器控件以编程方式导航时,我得到了401.2。 我在IIS 7.0中设置了“失败的请求跟踪规则”,并使用Fiddler来嗅探请求,并发现身份验证头不正确。 但webbrowser.navigate有一个重载的方法,我们可以传递自定义的http头文件。

Effective way of making negative of image without external dlls

这是在C#Windows窗体中使用没有任何dll并且以有效,快速的方式对图像进行否定的解决方案? The best way to do this is directly accessing the pixels with bitmap data. Just to add some timing details: Performing Negate on an 8 Megapixel Image (on a 2.4 Ghz Core 2 Duo): SetPixel (~22 seconds) - 220 Times slower Color Matrix, Matajon's method below (~750 milliseconds) - 7 times slower Direct

没有外部dll的图像阴性的有效方式

这是在C#Windows窗体中使用没有任何dll并且以有效,快速的方式对图像进行否定的解决方案? 最好的方法是直接用位图数据访问像素。 只需添加一些时间细节: 对800万像素图像执行反转操作(在2.4 Ghz Core 2 Duo上): SetPixel(〜22秒) - 慢了220倍 彩色矩阵,Matajon的方法低于(〜750毫秒) - 慢7倍 直接访问位图数据(〜100毫秒) - 最快 所以,如果你不能有不安全的代码,那么Color Matrix比SetPixel好得多。