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
}
Występują problemy z powyższym kodem i otrzymuję błąd z wiersza tematu na linia z query.ToList()
. Oto, co próbuję zrobić:"Tylko argumenty, które można ocenić na kliencie, są obsługiwane dla metody String.Contains"
Po pierwsze, mam niestandardową klasę błędów, MyErrorClass
. Ilekroć wystąpi błąd w mojej witrynie, tworzę obiekt MyErrorClass
z wyjątku, przechowuję wszystkie dane z wyjątku w tym obiekcie i zapisuję informacje w bazie danych.
Jedną z właściwości wyjątków, które śledzę, jest komunikat o błędzie (ErrorMessage
). Mam bazę danych ErrorFilters
skonfigurowaną w bazie danych, w której użytkownik może filtrować błędy na podstawie numeru ErrorMessage
. Powiedzmy, że otrzymujesz mnóstwo błędów, które mówią: "System.Data.SqlClient.SqlException: Limit czasu minął, czas oczekiwania upłynął przed zakończeniem operacji lub serwer nie odpowiada.", I chcesz je zignorować. Po prostu dodajesz filtr do bazy danych z komunikatem ErrorMessage jako "timeout expired" i ustawiasz go na ignorowanie.
Teraz moja klasa powyżej jest ustawiona na błąd i decyduje, czy błąd powinien być filtrowany. Próbuję uzyskać listę wszystkich filtrów, które mają ErrorMessage
pasujące do tego błędu.
Jestem pewien, że to łatwa łatka, po prostu nie wiem, jak to naprawić.
Ta metoda powraca nieważne, co ma zrobić? Jeśli ma sprawdzić, czy błąd ma zostać wyświetlony, powinien zwrócić wartość boolean i znaleźć poprawkę. W innym przypadku, wyjaśnij nieco to pytanie. –
Funkcja wykonuje wiele innych rzeczy, które nie są związane z błędem, wszystkie te trzy linie, w których próbuję uzyskać listę filtrów, które pasują do błędu. Wyjaśniłem wszystko, co musisz wiedzieć, o co jeszcze się zastanawiasz? –