Mam trudności z wpisaniem zapytania linq, które sprawdzi, czy kolejne cyfry w liczbie całkowitej są zawarte w kluczu podstawowym tabeli. Załóżmy, że istnieje tabela o nazwie Employees
z kluczem podstawowym na kolumnie Employees.Id
. Załóżmy, że klucz podstawowy jest typu danych serwera SQL INT
. Chciałbym napisać kwerendy LINQ przy użyciu Entity Framework kod najpierw, że zwróci wszystkich pracowników, których podstawowy klucz zawiera ciąg 456. coś takiego:Integer Zawiera używanie Linq
string filter = "456";
var results = from e in myDbContext.Employees
where e.Id.Contains(filter)
select e;
Problem polega na tym, że zawiera metoda nie jest przeznaczona do typów danych w całkowitych C# ...
FYI string.Contains() nie jest metoda rozszerzenie, ale jest regularny sposób na obiektach smyczkowych. – recursive
@recursive: Dzięki, edytowałem pytanie, aby uwzględnić Twoją poprawkę. – Andrew
Mimo że X.L.Ant zaproponował rozwiązanie, możesz rozważyć zmianę typu danych swojej kolumny na "char" lub "varchar". Celem typu numerycznego jest przechowywanie i przetwarzanie * wielkości * wartości, dlatego typ 'int' ma wbudowane funkcje, takie jak" większy niż "i" mniejszy niż ". Jeśli poszczególne symbole w twoim ID mają rzeczywiste znaczenie, to to, co przechowujesz, jest po prostu * kodem *, który używa symboli numerycznych, ale nie przedstawia wielkości. – JDB