在linq语句中传递对象

时间:2014-03-06 10:51:07

标签: c# linq entities

我正在使用实体框架在Web Api中使用以下linq语句。一切都很好,除了在我的linq语句中我不知道如何传递ICollection

public class projOverview
{

    public int proj_id { get; set; }
    public string name { get; set; }
    public virtual ICollection<p_type> p_type { get; set; }   
}

linq声明是

   var pOver= (from c in db.pr_d
                               select new pOver
                               {
                                   name=c.proj.name,
                                   proj_id=c.proj.p_id,
                                   p_type= ICollection<c.proj.pro_type>   
                               }).Take(7);
                return pOver;

我在“p_type = ICollection”上得到intellisense错误,说它是一个类型但是像变量一样使用。 请让我知道如何解决它。谢谢

2 个答案:

答案 0 :(得分:1)

错误消息应该有用,您将p_type设置为类型(ICollection<T>)而不是变量,您需要更改为:

   var pOver = (from c in db.pr_d
                         select new ProjOverview
                           {
                               name=c.proj.name,
                               proj_id=c.proj.p_id,
                               p_type= c.p_type_variable   
                           }).Take(7);
   return pOver;

我也注意到你使用pOver作为类名,也许你打算使用ProjOverview?

答案 1 :(得分:0)

指定类型时,请使用typeof运算符

var pOver= (from c in db.pr_d
            select new pOver
            {
                name=c.proj.name,
                proj_id=c.proj.p_id,
                p_type= typeof(ICollection<c.proj.pro_type>)
            }).Take(7);
return pOver;