我想按另一个数组定义的顺序创建一个字符串集合。听起来有点混乱我知道,所以让我解释一下LINQ OrderBy需要帮助
requiredOrderOfElements
{
[0] category1,
[1] categoryX,
[2] something else
}
即
从客户
{
[0][0] categoryX,
[0][1] value from Category X,
[1][0] something else,
[1][1] value for something else,
[2][0] category1,
[2][1] value from Category 1
}
通过我的客户端通过了包含键和值的字符串数组
我想要的是要求中的“价值”文本按键
的d为了什么,我想
[0]value from Category 1
[1]value from Category X
[2]value for something else
我看过的OrderBy/IComparer的,不能看到实现的东西,我需要一个明显的方式。我目前的解决方案是一个丑陋的嵌套for循环
任何想法更优雅的方式,将不胜感激。
更新: - 这里是测试
[TestFixture]
public class GL_Linq_Test
{
[Test]
public void CanOrderByAnotherArray()
{
var requiredOrder=new[]{"my","required","order"};
var passedFromClient = new[]
{
new[] {"required", "cat"},
new[] {"order", "dog"},
new[] {"my", "bird"}
};
var ordered = FunkyOrderer.Order(requiredOrder, passedFromClient);
Assert.That(ordered.First()[1],Is.EqualTo("bird"));
Assert.That(ordered.Skip(1).First()[1], Is.EqualTo("cat"));
Assert.That(ordered.Skip(2).First()[1], Is.EqualTo("dog"));
}
}
public static class FunkyOrderer
{
//returns order bird,dog,cat not bird,cat,dog
public static IEnumerable<string[]> Order(string[] requiredOrder, IEnumerable<string[]>passedFromClient)
{
return from o in requiredOrder
join f in passedFromClient on o equals f[0]
orderby o
select f;
}
}
@Gilly - 这是不够的信息,甚至开始有意义。请张贴一些示例代码或每个数组实际外观的布局。 – 2009-04-30 00:33:30
嗯,不知道还有什么要投入!我会在下面发布一个测试,看看是否能更好地解释它 – Gilly 2009-04-30 03:44:41