gpt4 book ai didi

c# - "Only arguments that can be evaluated on the client are supported for the String.Contains method"

转载 作者:太空狗 更新时间:2023-10-29 21:25:43 27 4
gpt4 key购买 nike

public static void MyFunction(MyErrorClass err)
{
var query = from filter in DataContext.ErrorFilters select filter;
query = query.Where(f => err.ErrorMessage.Contains(f.ErrorMessage));
List<ErrorFilter> filters = query.ToList();
//...more code
}

所以我在使用上面的代码时遇到了一些问题,并且我从主题行中的 query.ToList() 行中得到了错误。这是我正在尝试做的事情:

首先,我有一个自定义错误类 MyErrorClass。每当我的网站出现错误时,我都会从异常中创建一个 MyErrorClass 对象,将异常中的所有数据存储在该对象中,并将信息存储在数据库中。

我正在跟踪的异常属性之一是错误消息 (ErrorMessage)。我在数据库中设置了一个 ErrorFilters 表,用户可以在其中根据 ErrorMessage 过滤错误。假设您收到大量错误消息“System.Data.SqlClient.SqlException:超时已过期。在操作完成之前超时时间已过或服务器未响应。”,并且您想忽略它们。您只需向数据库添加一个过滤器,将 ErrorMessage 设置为“超时已过期”,并将其设置为忽略。

现在,我上面的类设置为接受错误,并决定是否应该过滤错误。我正在尝试获取具有与错误匹配的 ErrorMessage 的所有过滤器的列表。

我确信这很容易修复,我只是不知道如何修复它。

最佳答案

嗯...看起来 Linq2SQL IndexOf 翻译比 Contains 更聪明。这应该有效:

public static void MyFunction(MyErrorClass err)
{
var query = DataContext.ErrorFilters;
query = query.Where(f => err.ErrorMessage.IndexOf(f.ErrorMessage)>=0);
List<ErrorFilter> filters = query.ToList();
//...more code
}

在 LinqPad 中可以看到它使用了 CHARINDEX,因为我们要求的不仅仅是“包含”,而是“它在哪里”,但很高兴与服务器端一起工作表达式。

关于c# - "Only arguments that can be evaluated on the client are supported for the String.Contains method",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1703767/

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