如何选择一个或多个Asp.Net实体框架列

时间:2017-05-18 14:19:59

标签: asp.net-mvc entity-framework linq

我正在尝试选择一个或多个这样的列,但我犯了错误。

List<Uye> allCustomer = new List<Uye>();
allCustomer = db.Uye
    .Select(i => new Uye { Ad = i.Ad })
    .ToList();

The entity or complex type 'tasarımDesenleriOdev1.Models.RepositoryPatern.Uye' cannot be constructed in a LINQ to Entities query.

这是我的Uye表。

[Table("Uye")]
public partial class Uye : BaseEntity
{
    public Uye()
    {
        Order = new HashSet<Order>();
    }       

    [StringLength(50)]
    public string Ad { get; set; }

    [StringLength(50)]
    public string Soyad { get; set; }

    [StringLength(50)]
    public string Email { get; set; }

    [StringLength(50)]
    public string KullaniciAdi { get; set; }

    [StringLength(500)]
    public string Foto { get; set; }

    public int? YetkiId { get; set; }

    [StringLength(50)]
    public string Sifre { get; set; }

    public string Adres { get; set; }

    public virtual ICollection<Order> Order { get; set; }

    public virtual Yetki Yetki { get; set; }
}

4 个答案:

答案 0 :(得分:1)

您提供的例外信息......

  

实体或复杂类型   'tasarımDesenleriOdev1.Models.RepositoryPatern.Uye'不可能   在LINQ to Entities查询中构造。

...似乎反映了这样一个事实:您正在尝试构建复杂实体的新实例,或许您应该只选择没有新的或新的DTO类型而不是实体类型。

尝试类似......

var allCustomer = db.Uye
    .Select(i => new { 
        Ad = i.Ad, 
        Soyad = i.Soyad 
    })
    .ToList();

答案 1 :(得分:1)

根据我的理解,如果您只想从对象中选择一列,您可以使用如下所示:

List<Uye> allCustomer  = db.Uye.Select(i => i.Ad).ToList();

注意: 我希望在你的表Uye,Ad是专栏之一。如果是这样,那么上面的linq查询肯定会起作用

其他信息:http://www.dotnettricks.com/learn/linq/difference-between-select-and-selectmany-in-linq

请让我知道您的反馈或想法

由于 KARTHIK

答案 2 :(得分:0)

问题是您不需要手动构建Uye个实例,EF会在您需要时为您提供帮助。在这种情况下,您似乎想要表Ad中的所有Uye列值。只要您的实体关系配置正确,下面的代码就可以正常工作:

allCustomers = 
    db.Uye
        // notice we create an anonymous object. EF uses this to figure out
        // exactly what you want selected in your sql SELECT field list, in 
        // this case it should end up with SELECT Ad from Uye...
        .Select(uye => new { uye.Ad })
        // force EF to generate an run the sql and materialize the results
        .ToList();

如果您需要整个Uye对象列表,因为您需要所有列值,您可以这样做:

allCustomers = db.Uye.ToList();

如果您需要多个列,而不是整个对象,则可以向匿名选择添加更多列,如下所示:

allCustomers = db.Uye
    .Select(uye => new { uye.Ad, uye.Property1, uye.Property2, ...})
    .ToList()

答案 3 :(得分:-1)

尝试代码:

allCustomer = db.Uye
.Select(i => new Uye { Ad = i.Ad ,Soyad =i.Soyad })
.ToList();