[英]Error: string[] does not contain a definition for 'Contains' - works and doesn't work
在MVC5应用上工作。 我对此有些困惑。。。我有2个变量,都定义为字符串数组(msUsers和msSites)。 一个是msUsers,允许我使用“包含”,另一个是不使用。 这是代码段。
private IQueryable<Event> GetEventsFiltered(
string userName,
string workStatus,
string[] msUsers,
string[] msSites,
int? eventTypeId)
{
IQueryable<Event> events = this.db.Events;
if (msUsers != null)
{
events = events.Include(a => a.AspNetUser)
.Where(a => msUsers.Contains(a.AspNetUser.Id));
}
if (msSites != null)
{
// It doesn't like Contains here....
events = events.Include(a => a.Branch)
.Where(a => msSites.Contains(a.Branch.Id));
}
错误(针对最后一个“包含”)...
'string[]' does not contain a definition for 'Contains' and the best extension method
overload 'Queryable.Contains<int>(IQueryable<int>, int)' requires a receiver of type
'IQueryable<int>'
我有点困惑,因为第一次使用Contains可以对SAME类型的变量正常工作。 有什么建议/想法吗? 谢谢!
*****更新以添加名称空间******
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Web.Mvc;
using System.Web.Security;
using AuditingApp.Models;
using AuditingApp.Services;
using AuditingApp.ViewModels;
using Microsoft.AspNet.Identity;
该错误基本上表示类型不匹配。 您的Branch.id
数据库列是一个整数,而您的msSites[]
是一个字符串数组。 您正在尝试使用Contains
将string
与int
进行比较而不进行类型转换。
选项1由于id似乎始终是一个int,因此您可以重构您的方法以接受int[] msSites
,这可能会解决问题。
选项2如果无法将参数类型更改为方法,则可以尝试在Contains
调用中将a.Branch.Id
转换为字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.