我有一个对象数组,每个对象有3个客户端,每个客户端都有一个客户端代码和一个客户端名称。我想使用C#Linq按客户端代码对不同对象进行分组。
对象[0]:客户端“ pickupFrom”具有“ clientCode”客户端“ loadAt”具有“ clientCode”客户端“ deliverTo”具有“ clientCode”
object [1]:客户端“ pickupFrom”具有“ clientCode”客户端“ loadAt”具有“ clientCode”客户端“ deliverTo”具有“ clientCode”
我想按这些客户端分组,并获得具有一个对象的数组,因为这些客户端是相同的。
使用Linq我可以做到:
Objects[] GroupedDistinct =
ungroupedObjects.GroupBy(line => new { line.pickupFrom.clientCode,
line.LoadAt.clientCode,
line.deliverTo.clientCode })
.Select(x => x.First())
.ToArray();
Run Code Online (Sandbox Code Playgroud)
这里的问题是,当将这些参数传递给groupby时,我不能多次传递clientCode,因为它多次定义了一个名称为clientCode的字符串,即使它不是来自同一客户端对象。
错误是“匿名类型不能具有相同名称的多个属性”,我知道您不能多次传递相同的字符串名称,但这就是使用clientCode完成这些对象(客户端)的方式。有没有解决的办法?
我有一个List<Batch> batchesList new List<Batch>();带字段 string orderNo和对象的列表int lineNo
我打印"orderNo-lineNo"
我想按orderNo然后lineNo排序.我遇到的问题是使用linq的sort(),这将排序为一个字符串,因此11AG131-13实际上会在11AG131-2之前出现
batchesList.Sort((x, y) => (x.orderNo + x.lineNo).CompareTo(y.orderNo + y.lineNo));
Run Code Online (Sandbox Code Playgroud)
感谢帮助