2

SQLのIsNumeric関数と同等のLinqの関数を使用する必要があります。私がやろうとしているのは、一般的なパターンに一致するコードを取得することです。コードは一意である必要があり、コードによって生成されます。パターンは次のようになります。

ABCD0000001ABCD0000002..。

ただし、ユーザーはコードを操作して、生成されたコードの任意の場所に任意の文字を入力できます(もちろん、後でコードの一意性を確認しますが、それは興味深いことではありません)。したがって、データベース内のレコードは次のようになります。

ABCD0000001 ABCD00000T01ABCDT0000002..など。

私が欲しいのは、プログラムで生成された(ユーザーが操作しない)最後のコードを取得し、最後の数字を取得することです。これにより、1ずつ追加して、一意のコードを作成できます。(したがって、最後に自動生成されたコードはABCD0007865であり、新しいコードはABCD0007866である必要があります)

私は試した

var lastCode = (
    from c in sedc.Codes
    where SqlMethods.Like(c.Code, "ABCD" + "%")
    where Int64.TryParse(c.Code.Substring(3,10),out t)
    orderby c.Code descending
    select c)
    .FirstOrDefault();

しかし、このコードはNotSupportedExceptionという例外をスローします:メソッド'Boolean TryParse(System.String、Int32 ByRef)'はSQLへのサポートされた変換を持っていません。 "

私は何をすべきか?私のやり方は複雑すぎますか?より賢い方法はありますか?前もって感謝します。

4

1 に答える 1

1

これは機能するはずです:

var lastCode = (
    from c in sedc.Codes
    where SqlMethods.Like(c.Code, "ABCD[0-9][0-9][0-9][0-9][0-9][0-9][0-9]")
    orderby c.Code descending
    select c)
    .FirstOrDefault();
于 2012-08-16T15:29:50.927 に答える