如何在 ASP.NET Core 中使用 Linq 操作 IQueryable
How to manipulate an IQueryable with Linq in ASP.NET Core
我想通过 Javascript PopOver 事件(鼠标悬停)访问给定国家/地区的城市列表,方法是引发 window,如下所示
为此,在国家/地区列表中,我有以下代码在 CountryController
中执行以下方法
<td>
<a href="#" data-toggle="popover" data-trigger="hover" id="@item.Id">@item.NumberCities</a>
</td>
<script>
$(document).ready(function () {
$('[data-toggle="popover"]').popover({
title: setData,
html: true,
placement: 'right'
});
function setData($id)
{
var set_data = '';
var element = $(this);
var id = element.attr("id");
$.ajax({
url: "/Countries/CitiesDetailsModal/" + id,
method: "post",
async: false,
data: { id: id },
success: function (data)
{
set_data = data;
}
});
return set_data;
}
});
</script>
CountryController.CS:
public ActionResult CitiesDetailsModal(int? id)
{
var paises = countryRepository.GetCountriesWithCities();
return View();
}
问题是我的 GetCountriesWithCities () 方法 returns 是一个 IQueryable,我无法使用 Linq
操作国家变量
我的国家变量的结果是...
如上所示,此方法列出了国家和其中对应的城市
但是我怎样才能访问它们呢?如何将按 CitiesDetailsModal () 方法中的参数接收的 CountryId 筛选的列表传递给查看?
我的模态视图当前收到一个城市模型,我想用以下 CitiesDetailsModal.CSHTML 格式显示它
@model IEnumerable<SoftwareCore.Common.Models.City>
@{
ViewData["Title"] = "CityNumbers";
}
<h4>Citys</h4>
<div class="container">
@foreach (var item in Model)
{
<p><label>Nombre:</label> @item.Name)</p>
}
</div>
我的模型在哪里:
Country.CS:
public class 国家:IEntity
{
public int Id { 得到;放; }
[Required]
[Display(Name = "Country")]
[MaxLength(50, ErrorMessage = "The field {0} only can contain {1} characters length.")]
public string Name { get; set; }
public ICollection<City> Cities { get; set; }
[Display(Name = "# Cities")]
public int NumberCities { get { return this.Cities == null ? 0 : this.Cities.Count; } }
}
City.CS:
public class City : IEntity
{
public int Id { get; set; }
[Required]
[Display(Name = "City")]
[MaxLength(50, ErrorMessage = "el campo {0} solo puede contener {1} caracteres de largo.")]
public string Name { get; set; }
}
如何从我的 CitiesDetailsModal () 方法中显示城市列表?
我必须更改我的方法 GetCountriesWithCities () 吗??或者我可以通过 Linq 驱动 IQueryable 吗?
public IQueryable GetCountriesWithCities()
{
return this.context.Countries.Include(c => c.Cities).OrderBy(c => c.Name);
}
对我有什么帮助吗?
所以您要查询所有国家/地区,但想要所选国家/地区的所有城市?
然后过滤并投影这些,将它们具体化为一个列表并将其发送到您的视图:
var allCities = paises.Where(c => c.Id == id.Value)
.SelectMany(c => c.Cities).ToList();
return View(allCities);
不过,为了使其正常工作,您的 IQueryable
-返回方法应该返回 IQueryable<Country>
。
我想通过 Javascript PopOver 事件(鼠标悬停)访问给定国家/地区的城市列表,方法是引发 window,如下所示
为此,在国家/地区列表中,我有以下代码在 CountryController
中执行以下方法<td>
<a href="#" data-toggle="popover" data-trigger="hover" id="@item.Id">@item.NumberCities</a>
</td>
<script>
$(document).ready(function () {
$('[data-toggle="popover"]').popover({
title: setData,
html: true,
placement: 'right'
});
function setData($id)
{
var set_data = '';
var element = $(this);
var id = element.attr("id");
$.ajax({
url: "/Countries/CitiesDetailsModal/" + id,
method: "post",
async: false,
data: { id: id },
success: function (data)
{
set_data = data;
}
});
return set_data;
}
});
</script>
CountryController.CS:
public ActionResult CitiesDetailsModal(int? id)
{
var paises = countryRepository.GetCountriesWithCities();
return View();
}
问题是我的 GetCountriesWithCities () 方法 returns 是一个 IQueryable,我无法使用 Linq
操作国家变量我的国家变量的结果是...
如上所示,此方法列出了国家和其中对应的城市
但是我怎样才能访问它们呢?如何将按 CitiesDetailsModal () 方法中的参数接收的 CountryId 筛选的列表传递给查看?
我的模态视图当前收到一个城市模型,我想用以下 CitiesDetailsModal.CSHTML 格式显示它
@model IEnumerable<SoftwareCore.Common.Models.City>
@{
ViewData["Title"] = "CityNumbers";
}
<h4>Citys</h4>
<div class="container">
@foreach (var item in Model)
{
<p><label>Nombre:</label> @item.Name)</p>
}
</div>
我的模型在哪里:
Country.CS:
public class 国家:IEntity { public int Id { 得到;放; }
[Required]
[Display(Name = "Country")]
[MaxLength(50, ErrorMessage = "The field {0} only can contain {1} characters length.")]
public string Name { get; set; }
public ICollection<City> Cities { get; set; }
[Display(Name = "# Cities")]
public int NumberCities { get { return this.Cities == null ? 0 : this.Cities.Count; } }
}
City.CS:
public class City : IEntity
{
public int Id { get; set; }
[Required]
[Display(Name = "City")]
[MaxLength(50, ErrorMessage = "el campo {0} solo puede contener {1} caracteres de largo.")]
public string Name { get; set; }
}
如何从我的 CitiesDetailsModal () 方法中显示城市列表?
我必须更改我的方法 GetCountriesWithCities () 吗??或者我可以通过 Linq 驱动 IQueryable 吗?
public IQueryable GetCountriesWithCities()
{
return this.context.Countries.Include(c => c.Cities).OrderBy(c => c.Name);
}
对我有什么帮助吗?
所以您要查询所有国家/地区,但想要所选国家/地区的所有城市?
然后过滤并投影这些,将它们具体化为一个列表并将其发送到您的视图:
var allCities = paises.Where(c => c.Id == id.Value)
.SelectMany(c => c.Cities).ToList();
return View(allCities);
不过,为了使其正常工作,您的 IQueryable
-返回方法应该返回 IQueryable<Country>
。