- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我理解 C# 关键字 var 在编译时暗示类型,因此需要在同一位置进行声明和赋值,从而使以下构造非法:
var something;
if (condition)
{
something=1;
}
else
{
something = 0;
}
即使 C# 编译器基本上可以确定当前作用域中的所有赋值都产生相同的类型,但它(目前)不会,因此会产生编译时错误。
在 LINQ 中使用 var 时,有时我想根据程序条件稍微不同地初始化我的结果变量。我发现的方法是使用 ?: 运算符,如:
var participants = (email == null ?
(from part in db.Participant
where part.SequenceNumber == seqNr
select part)
:
(from part in db.Participant
where part.EmailAddress == email
select part));
如果我只有两个可能的分配,这就足够了,但如果有多个可能的分配,很快就会变得笨拙。
是否有更优雅的方法?
最佳答案
您可以使用 .Where(...)
而不是查询语法:
var participants = email == null
? db.Participant.Where(p => p.SequenceNumber == seqNr)
: db.Participant.Where(p => p.EmailAddress == email);
但我个人根本不会在这里使用 var
- 它不会超过 2,但这是一个经典的“搜索”模式。我可能会使用:
IQueryable<Part> query = db.Participant;
if(email != null) query = query.Where(p => p.EmailAddress == email);
if(seqNr != null) query = query.Where(p => p.SequenceNumber == seqNr);
...
// consume query
这允许为更具体的查询组合多个条件(在本例中为“AND”)。你也可以做“或”,但它稍微复杂一些(除非你使用 Concat
/Union
,这很乱)。
关于c# - 有条件地分配 C# var : As elegant as it gets?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1987485/
我有一段代码需要快速运行,我正在优化运行数百万亿次的内部循环。 为了追求这个,我一直在这个内部循环中编写几个不同版本的代码,一些使用朴素的方法,一些使用 SSE 内在函数,等等。我做这一切的想法是当我
所以我正在开发一种编程语言,它可以编译为字节码以供 VM 执行,也可以编译为 C 作为中间语言以编译为 native 二进制文件。我选择 C 是因为它足够低级且可移植,通过重用现有编译器而不必编写
我偶尔注意到我的 Drive SDK 调用会定期失败并出现 500 错误,重试请求通常会立即修复错误。查看 Google 文档,建议使用指数退避技术,我编写了自己的实现,效果很好,但是在调试时我碰巧遇
我正在编写一个作为程序员应用程序基础的系统,它需要检测他们对某些数据的访问。我主要可以使用属性来做到这一点,如下所示: public class NiceClass { public int
我需要测试属性值是否以字母开头。如果不是,我会在它前面加上“ID_”,这样它就会是一个有效的 id 类型的属性值。 我目前有以下内容(测试值不以数字开头 - 我知道这些属性值只会以字母或数字开头),但
所以我有这行代码,我正在尝试找到一种方法以更优雅的方式编写它们: int randomHints1 = hintsRandom.nextInt(1200-100) + 100;
我正在使用 jOOQ,但我不太确定我是否按照我应该的方式使用它。我想知道我下面的代码是否可以写得更优雅。我所说的“优雅”是指基本上更改与列相关的任何内容都是相当烦人的。如果我添加、删除或更改列的顺序,
我正在研究 C++ 库。这个库将包含一堆简单的对象,它们彼此非常相似。 我已经为我的对象定义了一个简单的接口(interface): struct ICommand_v1 { virtual vo
我想知道您认为什么是定义常量数组变量的最佳和最简洁的方法,类似于 define 函数的工作方式。我在 Google 上看到很多人问这个问题,到目前为止,我想到的最简单的解决方案是在 define 语句
全部, 我目前正在对 ListBox 进行一些自定义,以提高我的应用程序的清晰度。基本上,很容易找到为此目的的“操作方法”,从而导致下面我当前的结果。 我对显示很满意,但是......我遇到了鼠标滚轮
背景 我可以访问我用于录音/分析的库的源代码,并且需要为我的应用程序修改它。 有一个主要 Activity (A 类),我在其中设置 View 和内容。该库有一个类(B 类),它使用 Audio Re
任何人都可以建议如何在 C++11/14 中优雅地迭代数字常量集(英语意思,而不是 C++ 意思),最好不要留下像这里这样的临时对象: set colors; colors.insert(0); co
编辑1:正如 Valentin Jacquemin 所建议的,我用一个 List> 来实现它。但是,当我现在更改值时,tomcat 会抛出错误:错误消息: SEVERE: /bvDesktop
这个问题在这里已经有了答案: 关闭 12 年前。
我想生成一个字符串比如sql命令: "INSERT INTO xxx VALUES(XXX, XXX, XXX)" 目前我使用 StringBuilder 和一些 String 常量(如“INS
这是我使用 pymongo 删除一堆记录的代码 ids = [] with MongoClient(MONGODB_HOST) as connection: db = connection[M
我使用优雅的配对方式将两个数字配对形成一个唯一的数字。但是,当我将两个相同的数字配对到 67108863 以上时,例如“pair(67108864,67108864)”,它会给我 4503599761
目前,我正在使用字符串连接构建网址。 String url = "http://localhost:8080/bo/" + docId; HttpEntity httpEntity = this.ha
我是 MEF 的新手,想在我目前正在开发的项目中使用它。 想法:我想写一个FileLoader这需要 T作为我正在尝试加载的类型的参数,并为我提供有关支持将哪些文件扩展名加载到该类型中的数据。类型加载
考虑以下(简单的)C++ 代码,将对象从自定义列表类型传输到 std::vector template void transfer(std::vector& target, const custom_
我是一名优秀的程序员,十分优秀!