Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法隐式转换类型';系统Linq.IQueryable<;模型>';至';型号';_C# - Fatal编程技术网

C# 无法隐式转换类型';系统Linq.IQueryable<;模型>';至';型号';

C# 无法隐式转换类型';系统Linq.IQueryable<;模型>';至';型号';,c#,C#,我有一个操作结果,用于从视图模型填充IQueryable字段和IEnumerable字段。我可以填充其中一个,但不能在遇到此错误时同时填充两个。我需要填充这两个字段,然后将它们传递给视图。有人能帮我解决这个错误吗 视图模型: public class AdminReviewViewModel { public IEnumerable<Review> Reviews { get; set; } public IQueryable Clients { get; set;

我有一个操作结果,用于从视图模型填充IQueryable字段和IEnumerable字段。我可以填充其中一个,但不能在遇到此错误时同时填充两个。我需要填充这两个字段,然后将它们传递给视图。有人能帮我解决这个错误吗

视图模型:

 public class AdminReviewViewModel {
    public IEnumerable<Review> Reviews { get; set; }
    public IQueryable Clients { get; set; }

    public int ClientID { get; set; }
    public int ReviewID {get; set;}
    public string ReviewName { get; set; }
    public int? ReviewPeriodID { get; set; }
    public string ReviewPeriodName { get; set; }
}
视图:


客户端ID
审查ID
评论名称
审核期间ID
审核期间名称
@foreach(模型中的var项目){
@DisplayFor(modelItem=>item.ClientID)
@DisplayFor(modelItem=>item.ReviewID)
@DisplayFor(modelItem=>item.ReviewName)
@DisplayFor(modelItem=>item.ReviewPeriodID)
@DisplayFor(modelItem=>item.ReviewPeriodName)
编辑
}

我认为您的
评论是某种类型的
IEnumerable
,您可以使用linq选择一个
IEnumerable

如果只需要第一个元素,或者必须将模型的类型更改为
IEnumerable

更新

public ActionResult Review() {

    var reviews = reviewRepo.GetAllReviews();

    var models = reviews.Select(s => new AdminReviewViewModel() {
        ClientID = s.ClientID,
        ReviewID = s.ReviewID,
        ReviewName = s.ReviewName,
        ReviewPeriodID = s.ReviewPeriodID,
        ReviewPeriodName = s.ReviewPeriod,
        Clients = clientRepo.Clients
    });

    return View(models);
}
表示“使
模型
成为调用
选择
的结果”。由于
model
已定义为单个
AdminReviewViewModel
,因此这没有意义

很可能您希望它更像:

public class AdminReviewViewModel
{
  public int ClientID { get; set; }
  public int ReviewID {get; set;}
  public string ReviewName { get; set; }
  public int? ReviewPeriodID { get; set; }
  public string ReviewPeriodName { get; set; }
}
public class AdminReviewListViewModel
{
  public IEnumerable<Review> Reviews { get; set; } // Don't know what this is for, but leaving it.
  public IQueryable Clients { get; set; }
  public IQueryable<AdminReviewViewModel> ReviewList { get; set; }
}
public ActionResult Review()
{
  AdminReviewListViewModel model = new AdminReviewListViewModel();
  model.Clients = clientRepo.Clients;
  var reviews = reviewRepo.GetAllReviews();
  model.ReviewList = reviews.Select(s => new AdminReviewViewModel() {
    ClientID = s.ClientID,
    ReviewID = s.ReviewID,
    ReviewName = s.ReviewName,
    ReviewPeriodID = s.ReviewPeriodID,
    ReviewPeriodName = s.ReviewPeriod,
    });
  return View(model);
}
公共类AdminReviewViewModel
{
public int ClientID{get;set;}
public int ReviewID{get;set;}
公共字符串ReviewName{get;set;}
public int?ReviewPeriodID{get;set;}
公共字符串ReviewPeriodName{get;set;}
}
公共类AdminReviewListViewModel
{
public IEnumerable Reviews{get;set;}//不知道这是干什么用的,但离开它。
公共IQueryable客户端{get;set;}
公共IQueryable ReviewList{get;set;}
}
公共行动结果审查()
{
AdminReviewListViewModel=新的AdminReviewListViewModel();
model.Clients=clientRepo.Clients;
var reviews=reviewRepo.GetAllReviews();
model.ReviewList=审阅。选择(s=>new AdminReviewViewModel(){
ClientID=s.ClientID,
ReviewID=s.ReviewID,
ReviewName=s.ReviewName,
ReviewPeriodID=s.ReviewPeriodID,
ReviewPeriodName=s.ReviewPeriod,
});
返回视图(模型);
}

然后您就有了一个包含所选结果的模型。

这不是相关代码,请显示您在哪里使用
model
从哪里获得异常(在哪一行)?@HamletHakobyan我在这一行收到异常:model=model.Reviews.Select(s=>new AdminReviewViewModel(){@AndrewKilburn您得到异常是因为您试图用linq语句中的
IEnumerable
覆盖类型为
AdminReviewViewModel
的变量。@HamletHakobyan仍然不高兴,不幸的是他调用了“获取所有评论”方法,为什么您会认为他只想获得一次审阅?因为
AdminReviewViewModel model=new AdminReviewViewModel()
@take Hi,我不想返回一条评论。我在尝试返回多条评论时多次调用模型行results@take感谢您提供最新的答案。但是,我现在只能返回评论,不能返回客户。我以前已经这样做了客户在模型中(
Clients=clientRepo.Clients
?)为什么
Review
的类型是
IEnumerable
而不是
IEnumerable
?因为Review是一个独立的实体。哦,我已经知道了你要做的事情。虽然我很感激你愿意提供帮助。它仍然返回相同的错误,但我现在要将客户端放在一个视图包中,并将它们放在一个选择列表中,然后返回re视图作为列表。谢谢
        model = reviews.Select(s => new AdminReviewViewModel() {
            ClientID = s.ClientID,
            ReviewID = s.ReviewID,
            ReviewName = s.ReviewName,
            ReviewPeriodID = s.ReviewPeriodID,
            ReviewPeriodName = s.ReviewPeriod,
        }).FirstOrDefault();
public ActionResult Review() {

    var reviews = reviewRepo.GetAllReviews();

    var models = reviews.Select(s => new AdminReviewViewModel() {
        ClientID = s.ClientID,
        ReviewID = s.ReviewID,
        ReviewName = s.ReviewName,
        ReviewPeriodID = s.ReviewPeriodID,
        ReviewPeriodName = s.ReviewPeriod,
        Clients = clientRepo.Clients
    });

    return View(models);
}
model = reviews.Select(s => new AdminReviewViewModel() {
            ClientID = s.ClientID,
            ReviewID = s.ReviewID,
            ReviewName = s.ReviewName,
            ReviewPeriodID = s.ReviewPeriodID,
            ReviewPeriodName = s.ReviewPeriod,
        });
public class AdminReviewViewModel
{
  public int ClientID { get; set; }
  public int ReviewID {get; set;}
  public string ReviewName { get; set; }
  public int? ReviewPeriodID { get; set; }
  public string ReviewPeriodName { get; set; }
}
public class AdminReviewListViewModel
{
  public IEnumerable<Review> Reviews { get; set; } // Don't know what this is for, but leaving it.
  public IQueryable Clients { get; set; }
  public IQueryable<AdminReviewViewModel> ReviewList { get; set; }
}
public ActionResult Review()
{
  AdminReviewListViewModel model = new AdminReviewListViewModel();
  model.Clients = clientRepo.Clients;
  var reviews = reviewRepo.GetAllReviews();
  model.ReviewList = reviews.Select(s => new AdminReviewViewModel() {
    ClientID = s.ClientID,
    ReviewID = s.ReviewID,
    ReviewName = s.ReviewName,
    ReviewPeriodID = s.ReviewPeriodID,
    ReviewPeriodName = s.ReviewPeriod,
    });
  return View(model);
}