[英]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.