假设我有一个左外连接:
from f in Foo
join b in Bar on f.Foo_Id equals b.Foo_Id into g
from result in g.DefaultIfEmpty()
select new { Foo = f, Bar = result }
Run Code Online (Sandbox Code Playgroud)
如何使用扩展方法表达相同的任务?例如
Foo.GroupJoin(Bar, f => f.Foo_Id, b => b.Foo_Id, (f,b) => ???)
.Select(???)
Run Code Online (Sandbox Code Playgroud) 我最近一直在阅读很多关于函数式编程的东西,我可以理解它的大部分内容,但是我无法解决的一件事就是无状态编码.在我看来,通过删除可变状态简化编程就像通过删除仪表板来"简化"汽车:成品可能更简单,但运气好,使其与最终用户交互.
几乎我能想到的每个用户应用程序都将状态作为核心概念.如果您编写文档(或SO帖子),状态将随每个新输入而变化.或者,如果你玩视频游戏,有很多状态变量,从所有角色的位置开始,他们往往不断移动.如果不跟踪变化的价值,你怎么能做有用的事情呢?
每当我找到讨论这个问题的东西时,它都是用真正技术性的函数来编写的,它假设我没有大量的FP背景.有没有人知道一种方法可以向那些对命令式编码有良好,扎实理解的人解释这一点,但是谁在功能方面是完整的n00b?
编辑:到目前为止,一堆回复似乎试图让我相信不可变值的优点.我得到那个部分.这很有道理.我不明白的是,如何在没有可变变量的情况下跟踪必须改变和不断变化的值.
作为一个没有在现实世界项目中使用这两种技术的人,我想知道是否有人知道这两者如何相互补充以及它们的功能重叠多少?
我有一个泛型类,应该允许任何类型,原始或其他.唯一的问题是使用default(T)
.在值类型或字符串上调用default时,它会将其初始化为合理的值(例如空字符串).调用default(T)
对象时,它返回null.由于各种原因,我们需要确保如果它不是基本类型,那么我们将有一个类型的默认实例,而不是 null.这是尝试1:
T createDefault()
{
if(typeof(T).IsValueType)
{
return default(T);
}
else
{
return Activator.CreateInstance<T>();
}
}
Run Code Online (Sandbox Code Playgroud)
问题 - 字符串不是值类型,但它没有无参数构造函数.那么,目前的解决方案是:
T createDefault()
{
if(typeof(T).IsValueType || typeof(T).FullName == "System.String")
{
return default(T);
}
else
{
return Activator.CreateInstance<T>();
}
}
Run Code Online (Sandbox Code Playgroud)
但这感觉就像一块垃圾.有没有更好的方法来处理字符串案例?
这可能是一个非常noobie的问题,但在今天的Web应用程序开发世界中,许多程序员不需要处理dll,因此不必费心去了解他们的目的.
什么是dll?
我被告知dll用于存储函数库,但除此之外我不太了解.希望有人在这里可以启发我,所以我终于不知道我的Windows目录中的所有.dll文件是做什么的.
我想知道是否有一种建议的方法来确定asp应用程序是否在本地运行.目前我使用Request对象并在服务器变量上执行localhost或127.0.0.1的字符串搜索,但这有一些限制.最大的一个是Request对象在我需要时并不总是可用.
这是场景......
if (entry.Properties["something"].Value != null)
attribs.something = entry.Properties["something"].Value.ToString();
Run Code Online (Sandbox Code Playgroud)
虽然有效且正常工作,但这看起来很难看.如果我在执行ToString()之前没有检查null,那么如果属性为null,则抛出异常.有没有更好的方法来处理这种情况?
非常感激!
我动态加载一个css样式表(从jQuery的一点帮助),如下所示:
var head = document.getElementsByTagName('head')[0];
$(document.createElement('link'))
.attr({ type: 'text/css', href: '../../mz/mz.css', rel: 'stylesheet' })
.appendTo(head);
Run Code Online (Sandbox Code Playgroud)
这适用于Firefox和谷歌浏览器,但不适用于IE.
有帮助吗?谢谢
我知道他们强迫你实现方法等,但我不明白为什么你想要使用它们.任何人都可以给我一个很好的例子或解释我为什么要实现这个.