gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 18:28:24 28 4
gpt4 key购买 nike

我刚问 this question .这让我想到了一个新问题:)

到目前为止,我使用了以下使用 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”。

关于如何解决这个问题的任何想法?我必须制作自己的对象吗?

最佳答案

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

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.
}

它仍然是一个引用对象,就像您的实际对象一样,它只是匿名的,因此在编译代码之前您不知道实际类型。

关于Linq to SQL : . FirstOrDefault() 不适用于选择新的 { ... },我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/201830/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com