我有以下代码来确定a的年龄 Person
var pList = ctx.Person.Where(x => x.Create > Date);
int Age = pList.Where(x => x.ID == "foo").FirstOrDefault().Age ?? 20;
Run Code Online (Sandbox Code Playgroud)
我选择一个Person
ID,如果它不存在,则默认值为20.
第二行无效,因为Age不能为null但是Person可以.有没有办法让这个工作在一条线上?我尝试过使用DefaultIfEmpty,但似乎没有用.
Tim*_*ter 16
你可以使用重载Enumerable.DefaultIfEmpty
:
int Age = pList
.Where(x => x.ID == "foo")
.Select(x => x.Age)
.DefaultIfEmpty(20)
.First();
Run Code Online (Sandbox Code Playgroud)
如您所见,FirstOrdefault
不再需要,因为如果输入序列为空(如果id-filter没有返回任何人),则采用默认值.
int Age = pList.Where(x => x.ID == "foo").FirstOrDefault()?.Age ?? 20;
Run Code Online (Sandbox Code Playgroud)
仅限于C#6.
归档时间: |
|
查看次数: |
476 次 |
最近记录: |