C# 更好的方法来迎合stringlist

C# 更好的方法来迎合stringlist,c#,linq,C#,Linq,我有以下代码来使用linq to entity更新我的表 它有两个参数,一个是字符串,另一个是字符串列表。我的linq查询将使用\r\n更新列 我希望我的字符串列表(HoursByRate)有一到五个值 例如,如果我的字符串列表只有一个值,那么在这种情况下,我可以将剩余的(HoursByRate2-5)指定为空空间吗?或 写一个单独的方法来满足这个逻辑 string HoursByRate1 = HoursByRate[0].ToString(); string HoursByRate2 =

我有以下代码来使用linq to entity更新我的表

它有两个参数,一个是字符串,另一个是字符串列表。我的linq查询将使用\r\n更新列

我希望我的字符串列表(HoursByRate)有一到五个值

例如,如果我的字符串列表只有一个值,那么在这种情况下,我可以将剩余的(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();
;

首先,您不应该有这个问题-重新考虑您的数据库架构:

使用一个表(例如“hourlyRates”),该表在用户表上有一个外键和一个小时费率。每个用户可以有多行(或者不管主表是什么),在您的情况下是一到五行。要获取给定用户的所有小时费率,您可以根据用户id将用户表与hourlyRate表连接起来。

string value=string.Empty;
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;
 }
对于(int i=0;i<5;i++) { 字符串str=“”; 如果(i
您正在尝试执行String.Join方法所做的操作吗

SEVTs.USER3 = String.Join(SqlFunctions.Char(10) + SqlFunctions.Char(13), HoursByRate)

问题是什么?问题到底出在哪里?我没有任何问题,我在请求建议写一个更好的方法来满足我上面提到的条件之一。如果字符串列表不包含所有五个值,那么为其余值指定null是一个好主意吗?如果您传递的是一个列表,那么我认为HoursByRate[1]将给出一个例外,如果它只有一个元素。或者您传递的是大小为5的固定长度列表,并且有值string.Empty,而不是所有五个值。@ethicalogics,我的字符串列表可能包含一个值或最多五个值,并且它的长度不是固定的。true但数据库是第三方的,所以我们无法控制它。我必须通过前端来完成:(,我尝试了switch语句,也尝试了你的语句,我得到了一个异常“这个函数只能从LINQ调用到实体。”“SqlFunctions.Char(10)+SqlFunctions.Char(13)”这不是重新组织意味着用AScii值10和13替换它。你的意思是这样的“value+=str+SqlFunctions.Char(012)+SqlFunctions.Char(015);“如果我没记错的话,您正在使用SqlFunctions.Char()获取ASCII 10和13的字符值,您可以将其替换为(Char)10和(Char)13。我已经更新了答案,我当然想做上面提到的“ethicalogics”,但我使用了switch语句,但都失败了