gpt4 book ai didi

c# - 无法将类型 '.List' 隐式转换为 '.List'

转载 作者:可可西里 更新时间:2023-11-01 07:51:31 26 4
gpt4 key购买 nike

在以下返回列表的代码中:

public List<Customer> GeAllCust()
{
var results = db.Customers
.Select(x => new { x.CustName, x.CustEmail, x.CustAddress, x.CustContactNo })
.ToList()
return results;
}

我收到 C# 无法转换列表的错误报告:

Error: Cannot implicitly convert type System.Collections.Generic.List<AnonymousType#1> to System.Collections.Generic.List<WebApplication2.Customer>

这是为什么?

下面的屏幕截图显示了 Visual Studio 在错误的工具提示中提供的一些附加信息:

返回一些列而不是整个表的正确方法....?

public object GeAllCust()
{
var results = db.Customers.Select(x => new { x.CustName, x.CustEmail, x.CustAddress, x.CustContactNo }).ToList();
return results;
}

最佳答案

当您查看代码时:

x => new { ... }

这会创建一个新的 anonymous type .如果您不需要只拉回一组特定的列,您可以执行以下操作:

return db.Customers.ToList();

这假设Customers是一个 IEnumerable<Customer> ,它应该与您要返回的内容相匹配。

编辑

您已经注意到您只想返回列的特定子集。如果你在编码时需要任何类型的编译器帮助,你需要创建一个自定义类来保存这些值:

public class CustomerMinInfo
{
public string Name { get; set; }
public string Email { get; set; }
public string Address { get; set; }
public int? ContactNumber { get; set; }
}

然后将您的函数更改为以下内容:

public List<CustomerMinInfo> GetAllCust()
{
var results = db.Customers.Select(x => new CustomerMinInfo()
{
Name = x.CustName,
Email = x.Email,
Address = x.Address,
ContactNumber = x.CustContactNo
})
.ToList();

return results;
}

这会起作用,但是,您将失去与数据库上下文的所有关系。这意味着如果您更新返回值,它不会将其重新存入数据库。

此外,重复我的评论,返回更多列(字节数组除外)并不一定意味着更长的执行时间。返回很多行意味着更多的执行时间。您的函数返回数据库中的每个客户,当您的系统增长时,这将开始挂起您的程序,即使列数减少也是如此。

关于c# - 无法将类型 '.List<AnonymousType#1>' 隐式转换为 '.List<WebApplication2.Customer>',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17836799/

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