1

私はSQLテーブルの列に以下のようなリストを持っています。

IT-001
IT-002
IT-003
IT-004

LINQ を使用して次のコードを生成したいと考えています。現在、私は以下のコードを使用しています。C# コードを使用せずに、純粋な LINQ クエリを使用してそれを実現できるかどうかを知りたいです。はいの場合、どのように?

 private StockDataClassesDataContext dc;

        public string getNextItemCode()
        {
            dc = new StockDataClassesDataContext();

            List<string> code = (from tbItem in dc.tblItems
                                select tbItem.ItemCode).ToList<string>();


            List<int> Numbers = new List<int>();

            foreach (string item in code)
            {
                string[] arr = item.Split('-');

                Numbers.Add(Convert.ToInt32(arr[1]));

            }

            int maxNumber = 0;

            maxNumber = Numbers.Count > 0 ? Numbers.Max() : 0;

            int nextNumber = maxNumber + 1;

            string itemCode = "IT-"+nextNumber;

            return itemCode;
        }
4

4 に答える 4

3

ベスト プラクティスは、データベースに数値用の別のフィールドを作成することです。SeqNo カラムと同様です。これにより、次の番号を簡単に生成でき、保存も簡単です。

于 2013-05-01T07:19:54.617 に答える
2

この方法でアイテム コードを生成すると、多くのリーダーが接続すると失敗し、同じアイテム コードになってしまいます。

これらすべての問題を回避するために、ロジックを変更してみませんか?

自動インクリメント フィールドとアイテム コード テキスト部分の別の列を持つことができます。そのような多くのサブコードがあり、メインテーブルに外部キーを追加している場合は、別のテーブルに保存することもできます。

データベースが自動的に ID 番号をインクリメントするので、次のコードを生成する方法について心配する必要はありません。アイテムコードを表示したい場合は、テキスト部分とid部分を結合することができます。

于 2013-05-01T06:03:24.637 に答える