简体   繁体   English

在Linq-to-SQL查询中返回null或对象

[英]returning null or object in Linq-to-SQL query

When I'm looking for a record that is mapped to an object model, I have something like this: 当我寻找映射到对象模型的记录时,我会看到以下内容:

var Output = (from x in MyDC.SomeTable
              where  ....
              select new SomeObjectModel()
              {
                 SomeProp = x.SomeColumnField

              }.Single();

Now, I want to return on object but only if the object was found I'm doing this: 现在,我想返回对象,但只有在找到对象的情况下,我才这样做:

var Output = (from x in MyDC.SomeTable
              where ....
              orderby x.SomeTime descending
              select s).FirstOrDefault();

This tells me if the object was found and from there, I want to be able to retrieve SomeObjectModel() and fill in its properties but only if there's an element that was found with the . 这告诉我是否找到了对象,然后从那里开始,我希望能够检索SomeObjectModel()并填写其属性,但SomeObjectModel()只有在中找到了元素。 FirstOrDefault() statement and combine all this into one query. FirstOrDefault()语句,并将所有这些组合到一个查询中。 I tried adding a Select after .FirstOrDefault() but it doesn't work. 我尝试在.FirstOrDefault()之后添加一个Select ,但是它不起作用。

Thanks for your help. 谢谢你的帮助。

Use FirstOrDefault with your first version. FirstOrDefault与第一个版本一起使用。 You can also use SingleOrDefault if you are expecting only a single item or null. 如果只期望单个项目或为null,则也可以使用SingleOrDefault

var Output = (from x in MyDC.SomeTable
              where  ....
              select new SomeObjectModel()
              {
                 SomeProp = x.SomeColumnField

              }.SingleOrDefault(); //if only single item is expected or null

return Output;
var OutputAsModel = (from x in MyDC.SomeTable
where ....
orderby x.SomeTime descending
select s).Select(o=>new SomeObjectModel(o)).FirstOrDefault();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM