1

linqtoentityを使用してテーブルを更新する次のコードがあります。

2つのパラメータを取ります。1つは文字列と文字列リストです。私のlinqクエリは\r\nで列を更新します。

文字列リスト(HoursByRate)に1〜5個の値があることを期待しています。

たとえば、文字列リストに値が1つしかない場合、残り(HoursByRate2 -5)を空のスペースとして割り当てることはできますか?また

このロジックに対応する別のメソッドを作成しますか?

 string HoursByRate1 = HoursByRate[0].ToString();
 string HoursByRate2 = HoursByRate[1].ToString();//assign empty if no value
 string HoursByRate3 = HoursByRate[2].ToString();
 string HoursByRate4 = HoursByRate[3].ToString();
 string HoursByRate5 = HoursByRate[4].ToString();
var query = 
// var querySEVTs =
    from SEVTs in db.SEVTs
    where
    SEVTs.SESID == BookingSesid
    select SEVTs;
foreach (var SEVTs in query)
{
    SEVTs.USER3 = (HoursByRate1 + SqlFunctions.Char(10) + SqlFunctions.Char(13) + HoursByRate2 + SqlFunctions.Char(10) + SqlFunctions.Char(13) + HoursByRate3 + SqlFunctions.Char(10) + SqlFunctions.Char(13) + HoursByRate4 + SqlFunctions.Char(10) + SqlFunctions.Char(13) + HoursByRate5 + SqlFunctions.Char(10) + SqlFunctions.Char(13));
}
db.SaveChanges();
;
4

3 に答える 3

2

そもそもこの問題を抱えているべきではありません - データベーススキーマを再考してください:

ユーザー テーブルに外部キーがあり、単一の時間料金が設定されているテーブル ("hourlyRates" など) を使用します。ユーザーごとに(またはメインテーブルが何であれ)、複数の行が存在する可能性があります。この場合、1〜5です。特定のユーザーのすべての時間料金を取得するには、ユーザー ID に基づいて、ユーザー テーブルを hourlyRate テーブルと結合できます。

于 2013-02-12T03:54:11.673 に答える
1
string value = string.Empty;
for (int i = 0; i < 5; i++)
       {
           string str = " ";
           if (i < HoursByRate.Count())
               str = HoursByRate[i];
           value += str + ((char)10).ToString() + ((char)13).ToString();
       }

foreach (var SEVTs in query)
{
    SEVTs.USER3 = value;
 }
于 2013-02-12T04:56:42.553 に答える
0

String.Join メソッドが行うことをしようとしていますか?

SEVTs.USER3 = String.Join(SqlFunctions.Char(10) + SqlFunctions.Char(13), HoursByRate)
于 2013-02-12T05:04:52.190 に答える