gpt4 book ai didi

c# - 无法使用集合初始值设定项初始化类型 "x",因为它未实现 'System.Collections.IEnumerable'

转载 作者:行者123 更新时间:2023-11-30 20:50:33 24 4
gpt4 key购买 nike

我正在尝试使用 linq to sql 和 ViewModel 连接 3 个表,将查询传递给 View 并显示结果,但它不起作用。

更新
DbContext 类:

public partial class DbEntities : DbContext
{
public DbSet<Foo> Foos{ get; set; }
public DbSet<Bar> Bars{ get; set; }
public DbSet<Fubar> Fubars{ get; set; }
}

View 模型:

public class MyViewModel
{
public Foo Foo{ get; set; }
public Bar Bar{ get; set; }
public Fubar Fubar{ get; set; }
}

Controller :

public ActionResult Index(string searchString)
{
//var db = new MyViewModel(); //wrong
var db = new DbEntities();

var query = (from f in db.Foos
join b in db.Bars on f.IDFoo equals b.IDFoo
join fb in db.Fubars on b.IDBar equals fb.IDBar
select new MyViewModel {
f.IDFoo,
f.NameFoo,
f.CityFoo,
b.NameBar,
fb.NameFubar });


if (!String.IsNullOrEmpty(searchString))
{
query = query.Where(x => x.NameFubar.Contains(searchString));
}
return View(query);
}

查看:

@model IEnumerable<Proj.Models.MyViewModel>

@using (Html.BeginForm())
{
<p>
@Html.TextBox("SearchString")
<input type="submit" class="no-button" value="Search" />
</p>
}

@foreach (var item in Model)
{
<div class="title">@Html.DisplayFor(modelItem => item.NameFubar)</div><br />
...

}

我收到以下错误:

1. "Cannot initialize type 'Proj.Models.MyViewModel' with a collection initializer because it does not implement 'System.Collections.IEnumerable' "

最佳答案

问题是我必须在 MyViewModel 中设置属性而不是类:

public short IDFoo { get; set; }
public string NameFoo { get; set; }
public string CityFoo { get; set; }
public string NameBar { get; set; }
public string NameFubar { get; set; }

在 linq 查询中我使用的是集合初始化器而不是对象初始化器:

select new MyViewModel {
IDFoo = f.IDFoo,
NameFoo = f.NameFoo,
CityFoo = f.CityFoo,
NameBar = b.NameBar,
NameFubar = fb.NameFubar
};

关于c# - 无法使用集合初始值设定项初始化类型 "x",因为它未实现 'System.Collections.IEnumerable',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22439934/

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