gpt4 book ai didi

c# - 错误 : string[] does not contain a definition for 'Contains' - works and doesn't work

转载 作者:太空宇宙 更新时间:2023-11-03 21:00:29 24 4
gpt4 key购买 nike

正在开发 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[] 是一个字符串数组。您正在尝试使用 Containsstringint 进行比较,而不进行类型转换。

选项 1由于 id 似乎始终是一个 int,您可以重构您的方法以接受 int[] msSites,这可能会解决问题。

选项 2如果您无法更改方法的参数类型,您可以尝试将 a.Branch.Id 转换为 Contains 调用中的字符串。

关于c# - 错误 : string[] does not contain a definition for 'Contains' - works and doesn't work,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45988620/

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