如何使用实体框架在 Linq 中编写列表类型返回值?

发布于 2024-08-27 19:36:26 字数 856 浏览 8 评论 0原文

如何从以下过程返回 List 数据类型。如果我按 F5 它会抛出此错误:

错误 1 ​​无法隐式转换类型 'System.Linq.IQueryable' 到 '系统.集合.通用.列表'。 存在显式转换(您是 缺少演员表?) C:\Documents 和 设置\yusufk\Desktop\EFTestSolutions\WebApplicationTest1\WebApplicationTest1\Default.aspx.cs 101 61 Web应用程序测试1

我认为我应该重新排列或重新编码“select new {. . . . . ” ?

protected List<personel> GetPersonalsData2()
{
    List<personel> personeller;
    using (FirmaEntities firmactx = new FirmaEntities())
    {
       personeller = (from p in firmactx.Personals 
                      select new { p.ID, p.Name, p.SurName });
       return personeller.ToList();
    }
 }

 public class personel
 {
    public int ID { get; set; }
    public string Name { get; set; }
    public string SurName { get; set; }
 }

How can I return List<personel> data type from below procedure. If I press F5 it throw me this error:

Error 1 Cannot implicitly convert type
'System.Linq.IQueryable'
to
'System.Collections.Generic.List'.
An explicit conversion exists (are you
missing a cast?) C:\Documents and
Settings\yusufk\Desktop\EFTestSolutions\WebApplicationTest1\WebApplicationTest1\Default.aspx.cs
101 61 WebApplicationTest1

I think that I should rearrange or recode "select new {. . . . " ?

protected List<personel> GetPersonalsData2()
{
    List<personel> personeller;
    using (FirmaEntities firmactx = new FirmaEntities())
    {
       personeller = (from p in firmactx.Personals 
                      select new { p.ID, p.Name, p.SurName });
       return personeller.ToList();
    }
 }

 public class personel
 {
    public int ID { get; set; }
    public string Name { get; set; }
    public string SurName { get; set; }
 }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

寂寞笑我太脆弱 2024-09-03 19:36:27

这部分返回匿名类型:

personeller = (from p in firmactx.Personals select new { p.ID, p.Name, p.SurName });
return personeller.ToList();

它需要是:

personeller = (from p in firmactx.Personals 
               select new personel { Id = p.ID, 
                                     Name = p.Name, 
                                     SurName = p.SurName }).ToList();

或者如果该集合已经是 personal 类型,您可以这样做:

personeller = (from p in firmactx.Personals select p).ToList();

或者,只是这样:

personeller = firmactx.Personals.ToList();

在您发布的代码中,它试图返回 List(直接来自 IQueryable,另一个无效的转换)而不是 List 并且无法在两者之间进行转换,您需要处理相同的类型。

This part is returning an anonymous type:

personeller = (from p in firmactx.Personals select new { p.ID, p.Name, p.SurName });
return personeller.ToList();

It needs to be:

personeller = (from p in firmactx.Personals 
               select new personel { Id = p.ID, 
                                     Name = p.Name, 
                                     SurName = p.SurName }).ToList();

Or if that collection is of type personal already, you can do this:

personeller = (from p in firmactx.Personals select p).ToList();

Or, just this:

personeller = firmactx.Personals.ToList();

In your posted code it's trying to return List<yourAnonymousType> (directly from the IQueryable, another invalid cast) instead of List<personal> and can't convert between the two, you need to be dealing with the same type.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文