0

SQL Server 2005 を使用して、次のようなクエリを実行しました

SELECT * 
FROM mytable 
WHERE (LEFT (title, 1) BETWEEN @PREFIXFROM AND @PREFIXTO)

これを使用してアルファベットのフィルタリングを行うため、たとえば

PREFIXFROM = a
PREFIXTO = c 

mytable 内の a と c の間のすべてのアイテムを取得します (包括的)

linqでこれを行うにはどうすればよいですか?

すべてのレコードを正常に選択しています..しかし、1)「LEFT」操作を行うにはどうすればよいですか?2)非数値フィールドで <= 型演算子を行うにはどうすればよいですか?

どんなアイデアでも大歓迎です!

4

1 に答える 1

3

SQL について考えるのではなく、何を達成しようとしているのか、.NET でそれをどのように行うかを考えてください。したがって、最初の文字を取得しようとしており、それが「a」と「c」の間にあるかどうかを調べています。

var query = from row in mytable
            where row.title[0] >= 'a' && row.title[0] <= 'c'
            select row;

またはドット表記で:

var query = mytable.Where(row => row.title[0] >= 'a' && row.title[0] <= 'c');

または:

var query = mytable.Where(row => row.title.Substring(0, 1).CompareTo("a") >= 0 &&
                                 row.title.Substring(0, 1).CompareTo("c") <= 0));
于 2009-11-03T14:38:26.327 に答える