Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 复合C1如何重写此Sql update语句以在c#中工作?_Arrays_Linq_C# 4.0_Sorting_C1 Cms - Fatal编程技术网

Arrays 复合C1如何重写此Sql update语句以在c#中工作?

Arrays 复合C1如何重写此Sql update语句以在c#中工作?,arrays,linq,c#-4.0,sorting,c1-cms,Arrays,Linq,C# 4.0,Sorting,C1 Cms,我在图像可排序网格中有一段代码,它根据用户对“propid”的新排序顺序发回一个整数字符串数组: { 'imgid': '4,2,3,5,6,7,8,9,1','propid':'391' } 上面在屏幕上显示了9幅图像。db image表既有图像id(imgid)字段,也有排序序列字段(orderseq)。我正在使用自定义命名空间数据类型: < connection.Get< ALocal.propimage >()

我在图像可排序网格中有一段代码,它根据用户对“propid”的新排序顺序发回一个整数字符串数组:

 { 'imgid': '4,2,3,5,6,7,8,9,1','propid':'391' }
上面在屏幕上显示了9幅图像。db image表既有图像id(
imgid
)字段,也有排序序列字段(
orderseq
)。我正在使用自定义命名空间数据类型:

< connection.Get< ALocal.propimage >() 
()
与C1中的所有数据类型连接一样

在direct SQL中,我将这样写:

string []q = imgid.Split(',');
string qry="";
for (int i = 0; i < q.Length; i++)
{
  qry += "update ALocal_propimage set propimage_orderseq="+(i+1)+"  where prop_id="+propid+" and  propimage_id="+q[i]+"  ;";
}
sqlHelper obj = new sqlHelper();
obj.ExecuteNonQuery(qry);
return "Record Updated";
string[]q=imgid.Split(',');
字符串qry=“”;
for(int i=0;i
在我不断失败的情况下,这如何转化为使用c#将其写入Composite的C1 CMS“更新多个数据”方法

C1站点“更新多个数据”方法的基本示例为:

using  (DataConnection connection = new DataConnection())
{
 var myUsers = connection.Get<Demo.Users>().Where (d => d.Number < 10).ToList();
 foreach  (Demo.Users myUser in myUsers)
{
  myUser.Number += 10;
}   
connection.Update<Demo.Users>(myUsers);
} 
使用(DataConnection=newdataconnection())
{
var myUsers=connection.Get().Where(d=>d.Number<10.ToList();
foreach(在myUsers中的Demo.Users myUser)
{
myUser.Number+=10;
}   
连接。更新(myUsers);
} 

非常感谢您的帮助。

您需要将更新代码拆分为get和更新,以便让C1确切地知道您要更新的实体。像这样的

for (int i = 0; i < q.Length; i++)
{
  var propimages = connection.Get<ALocal.propimage>().Where(o => o.PropId = propid && p.PropImageId = q[i]);
  foreach (var o in propimages) 
  {
     o.OrderSeq = i + 1;
  }

  connection.Update(propimages);
}
for(int i=0;io.PropId=PropId&&p.PropImageId=q[i]);
foreach(propimages中的var o)
{
o、 OrderSeq=i+1;
}
连接。更新(ProPicages);
}

谢谢Pauli,您总是一个好信息和帮助的喷泉。上述解决方案会在循环中单独更新每条记录。如果有大量图像需要更新,那么生成更新列表,然后使用对数据集的一次更新调用来更新批次是有意义的。