我需要你的帮助。
让我们说:
public class myProduct
{
public string Tags {get;set;} // Comma seperated values
}
List<myProduct> myProducts = WhatEver // Feeding the list products
List<long> capacity = WhatEverAlso // Feed the list long values from somewhere
现在,我想要做的是按容量订购myProducts列表。
所以,如果myProduct.Tags
=“89,3,6”
和容量=“1,2,3,4,5,6”
首先出现的产品中包含1个,然后是2个等。
问题不是对它们进行排序,问题实际上是某些标签不包含容量值。
修改 例如,products.tags可以是“89,16,99” 所以它不包含任何容量值。 的 EDIT2: 我不需要过滤产品,只需订购它们。
EDIT3:
我开始使用var foo = myProducts.OrderBy(p => p.Tags.Split(',').Intersect(capacity).OrderBy(c => capacity).Any());
我觉得我很接近,但我无法弄清楚剩下的。 :(
希望你理解我的问题,我的英语表达不是那么好: 随时可以向我询问任何其他信息。
答案 0 :(得分:0)
问题并不完全清楚,但是这会让你走上正轨吗?
var ordered =
from p in myProducts
let tags = p.Tags.Split(',').Select(long.Parse)
let capIndices =
tags.Select(t => capacity.IndexOf(t))
.Where(i => i >= 0)
where capIndices.Any() // filter out products without capacity
let capIndex = capIndices.Min()
orderby capIndex
select p;
按照capacity
列表中任何标签的最早位置对产品进行排序。如果其{1}}列表中没有任何标记,则最终结果中不会包含产品。