今天我终于"得到"了Func<>委托,并看到我如何使用它来使我的一些不太可读的LINQ查询(希望)更具可读性.
这是一个简单的代码示例,在一个(非常)简单的例子中说明了上述内容
List<int> numbers = new List<int> { 1, 5, 6, 3, 8, 7, 9, 2, 3, 4, 5, 6, };
// To get the count of those that are less than four we might write:
int lessThanFourCount = numbers.Where(n => n < 4).Count();
// But this can also be written as:
Func<int, bool> lessThanFour = n => n < 4;
int lessThanFourCount = numbers.Where(lessThanFour).Count();
Run Code Online (Sandbox Code Playgroud)
任何人都可以提供他们使用的场景的任何示例Func<>吗?
(请注意,我不主张Func<>在如上所示的简单场景中使用,它只是一个希望使功能变得Func<>清晰的示例.)
好吧,这听起来有点奇怪,但我需要做的很简单.我有一个公司列表,每个公司都有一个描述.该网站有4种语言版本.我的问题来自于我用英语列出一家公司,但负责翻译法语的人仍然没有翻译,所以我有一个简单的说法:
SELECT TOP(6)
company.name,
company.description,
company.address
WHERE
langid=1
ORDER BY
company.id DESC
Run Code Online (Sandbox Code Playgroud)
真正的查询更复杂,但我认为用这个来理解问题会更容易.我需要做的是,当langid 2中的描述为空时,然后向我显示langid 1,因为langid 1总是第一个将被添加的.我不想将描述字段显示为空.
想象第1行,第2行,第3行和第5行都有langid 2的描述,但没有第4行和第6行的描述.我需要为包含它的行显示langid 2,但对于没有描述的行,则需要langid 1.
我知道我可能会用@i字段递增并在临时表中逐个插入结果,但有没有更好的方法呢?
想象一下这两个类:
class Part
{
public string Name { get; set;}
public int Id { get; set; }
}
class MainClass
{
public Part APart { get; set;}
}
Run Code Online (Sandbox Code Playgroud)
如何将MainClass绑定到WinForm上的组合框,因此它显示Part.Name(DisplayMember = "Name";),并且组合的选定项设置MainClass的APart属性,而无需处理下拉列表中的任何事件.
据我所知,将ComboBox的ValueMember设置为"Id"意味着它将尝试将APart设置为不正确的数字(Id).
希望这很清楚!
我有一系列表示坐标的Python元组:
tuples = [(1,1), (0,1), (1,0), (0,0), (2,1)]
Run Code Online (Sandbox Code Playgroud)
我想创建以下列表:
l = []
for t in tuples:
l[ t[0] ][ t[1] ] = something
Run Code Online (Sandbox Code Playgroud)
我得到一个IndexError:list index超出范围.
我的背景是在PHP中,我希望在Python中你可以创建以index> 0开头的列表,即创建间隙然后填充它们,但似乎你不能.
我们的想法是让列表在之后排序.我知道我可以用字典做到这一点,但据我所知,字典不能按键排序. 更新:我现在知道他们可以 - 看到公认的解决方案.
编辑:我想要做的是创建一个2D数组,代表用元组坐标描述的矩阵,然后按顺序迭代它.如果我使用字典,我不能保证迭代按键顺序 - >(0,0)(0,1)(0,2)(1,0)(1,1)(1,2) )(2,0)(2,1)(2,2)
有人可以帮忙吗?
我正在Perl中编写一个Web服务,它将在SSL(HTTPS)下运行,并带有客户端证书.如何确定客户端在当前连接中使用的证书,以便我可以过滤掉不需要的证书?
注意:Web服务作为mod_perl脚本运行.
C#3.0中引入了许多让我感到不安的功能,例如对象初始化器,扩展方法和隐式类型变量.现在在C#4.0中使用动态关键字之类的东西我会更加关注.
我知道每个功能的CAN以适当的方式使用但在我看来,它们使开发人员更容易做出错误的编码判决,因此写信更差的代码.在我看来,微软正试图通过简化编码而不是要求来赢得市场份额.就个人而言,我更喜欢一种严谨的语言,对我的编码标准提出更高的要求,并迫使我以OOP的方式构建事物.
以下是我对上述功能的一些关注示例:
对象构造函数可以执行未向使用者公开的重要逻辑.这是对象开发人员的控制.对象初始化程序将此控制权移除,并允许使用者决定要初始化哪些字段.
编辑:我没有意识到你可以混合构造函数和初始化程序(我的坏)但这开始看起来很麻烦,所以我仍然不相信这是向前迈进的一步.
允许开发人员使用扩展方法扩展内置类型允许所有和各种各样的人开始将他们喜欢的宠物方法添加到字符串类中,这可能最终导致一系列令人眼花缭乱的选项,或者需要更多的编码标准来监管这些方法.
允许隐式类型化变量允许快速和脏的编程,或者正确的OOP方法,这可能很快成为整个应用程序中无法管理的变量.
我的担忧是否合理?
我正在自学C#参考,它提供了以下信息:
1.21.4.声明通用参数可以在类,结构,接口,委托的声明中引入通用参数(请参阅即将发布的"代理"部分)和方法.其他构造(如属性)不能引入泛型参数,但可以使用泛型参数.例如,属性Value使用T:
public struct Nullable<T>
{
public T Value {get;}
}
Run Code Online (Sandbox Code Playgroud)
首先,我在尝试编译时遇到错误,说它必须包含一个正文,因为它既不是抽象也不是外部,或者自动参数必须同时具有get和set访问器.
其次,假设它是错误的,我通过添加"set;"来纠正它,我似乎无法成功地格式化它.
有没有一种简单的方法将位掩码转换为数组索引?
即.如果我有一个枚举
a = 0x01,
b = 0x02,
c = 0x04,
d = 0x08,
e = 0x10,
etc
Run Code Online (Sandbox Code Playgroud)
我想将相关数据存储在数组中,是否有一种简单的方法可以将a转换为0,b转换为1,c转换为2.等等?
非常感谢
我想要一些类似于这篇文章的内容,但是使用Visual Studio.在编辑XAML,XML或HTML时,这将非常有用.
例如:
<StackPanel>
<Button>I'm A Button</Button>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
如果我开始更改'StackPanel'标签,我想自动更改结束标签以匹配(例如,如果我将其切换为'网格').我想我可以写一个宏来做它,但我想先使用原生方法(如果有的话).
我需要查找并遍历具有特定属性的所有子元素.以下代码在jquery 1.2.6中运行良好,但在1.3.2中抛出异常
$(parentElement).find('*[@someAttributeName]').each(function(index){
doSomething(this);
});
Run Code Online (Sandbox Code Playgroud)
实现这一目标的正确方法是什么?