当前位置:  开发笔记 > 数据库 > 正文

Linq to SQL:.FirstOrDefault()不适用于选择新的{...}

如何解决《LinqtoSQL:.FirstOrDefault()不适用于选择新的{}》经验,为你挑选了1个好方法。

我刚问了这个问题.这引出了我一个新问题:)

到目前为止,我使用了以下使用Linq to SQL选择内容的模式,目的是能够处理查询返回的0"行":

var person = (from p in [DataContextObject].Persons
              where p.PersonsID == 1
              select new p).FirstOrDefault();

if (person == null)
{
    // handle 0 "rows" returned.
}

但是FirstOrDefault()当我这样做时我无法使用:

var person = from p in [DataContextObject].Persons
             where p.PersonsID == 1
             select new { p.PersonsID, p.PersonsAdress, p.PersonsZipcode };

// Under the hood, this pattern generates a query which selects specific
// columns which will be faster than selecting all columns as the above
// snippet of code does. This results in a performance-boost on large tables.

如何使用第二种模式检查查询返回的0"行"?



更新:

我认为我的构建失败是因为我试图将查询结果分配给this._user使用类型声明的变量()[DataContext].User.

this._user = (from u in [DataContextObject].Users
              where u.UsersID == [Int32]
              select new { u.UsersID }).FirstOrDefault();

编译错误:无法将类型"AnonymousType#1"隐式转换为"[DataContext] .User".

有关如何解决这个问题的任何想法?我必须制作自己的物品吗?



1> Nick Berardi..:

为什么你能继续做同样的事情?它给你一个错误吗?

var person = (from p in [DataContextObject].Persons
              where p.PersonsID == 1
              select new { p.PersonsID, p.PersonsAdress, p.PersonsZipcode }).FirstOrDefault();

if (person == null) {    
    // handle 0 "rows" returned.
}

它仍然是一个与实际对象一样的引用对象,它只是匿名的,所以在编译代码之前你不知道实际的类型.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有