我有一种无法正常工作的控制器方法。 这是方法:
public ActionResult Index(DateTime? data)
{
var servizi = (Request["servizi"] ?? "").Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(n => Convert.ToInt32(n)).ToArray();
if (servizi == null || servizi.Length == 0)
{
ModelState.AddModelError("servizi", "Selezionare almeno un servizio");
return View();
}
var dati = this.GetDbContext().mensilizzazioni.Include(x => x.operatore).Include(x => x.utente).Where(x => x.data1 == data.Value && servizi.Contains(x.id_utente_servizi));
dati = getProfiledDatas(dati.AsQueryable<mensilizzazioni>());
return View();
}
这些是LINQ servizi.Contains上的错误:
错误2&#39; int []&#39;不包含&#39;包含&#39;的定义和最好的扩展方法重载&#39; System.Linq.ParallelEnumerable.Contains(System.Linq.ParallelQuery,TSource)&#39;
Error1参数实例:无法转换为&#39; int []&#39;到&#39; System.Linq.ParallelQuery&#39;
请帮助我。谢谢!
答案 0 :(得分:2)
第一期:
您正在将传递的字符串转换为int
数组,然后尝试在其上运行Contains
方法(数组中不存在)。
请尝试ToList()
,因为它有Contains
方法。
e.g:
var servizi = (Request["servizi"] ?? "").Split(new[] { ',' },
StringSplitOptions.RemoveEmptyEntries).Select(n => Convert.ToInt32(n)).ToList();
第二期:
由于您的成员变量是int?
(即。nullable<int>
),您还需要更改第二个查询以使用Value
的{{1}}属性。
id_utente_servizi
这假定var dati = this.GetDbContext().mensilizzazioni.Include(x => x.operatore).Include(x => x.utente).Where(x => x.data1 == data.Value && servizi.Contains(x.id_utente_servizi.Value));
永远不会 null 。如果它可以 null ,您可能需要更改id_utente_servizi
条款,如下所示:Where
答案 1 :(得分:0)
x.id_utente_servizi的类型是什么?确保它是一个int。
如果我用错误的参数调用.Contains,我会得到一个类似的错误:
servizi.Contains("not an int");
&#39; INT []&#39;不包含&#39;包含&#39;的定义和最好的扩展方法重载&#39; System.Linq.Queryable.Contains(System.Linq.IQueryable,TSource)&#39;有一些无效的论点
实例参数:无法转换为&#39; int []&#39;到了System.Linq.IQueryable&#39;