query - linq to list c#



使用LINQ進行多重訂購 (1)

您可以使用ThenByThenByDescending擴展方法:

foobarList.OrderBy(x => x.Foo).ThenBy( x => x.Bar)

這個問題在這裡已經有了答案:

我從一個基本的類開始,我想在使用LINQ的List中進行操作,如下所示:

public class FooBar   
{  
    public virtual int Id { get; set; }  
    public virtual string Foo{ get; set; }  
    public virtual string Bar{ get; set; }
}

這是我最終發現解決我的問題使用非lambda LINQ的東西。

// code somewhere else that works and gets the desired results  
var foobarList = GetFooBarList();  // Abstracted out - returns List<Foobar>  

// Interesting piece of code that I want to examine
var resultSet = from foobars in foobarList  
                orderby foobars.Foo, foobars.Bar  
                select foobars;

// Iterate and do something interesting  
foreach (var foobar in resultSet)  
{  
    // Do some code  
}

我真正好奇的是,如果使用基於Lambda的擴展方法從通用的IEnumerable中完成同樣的事情就可以實現同樣的目標。 谷歌告訴我,我可以做下面的事情來完成它

var resultSet = foobarList.OrderBy(x => new {x.Foo, x.Bar})  
                          .Select(x=>x);

但是,如果我這樣做,我碰到foreach語句時會出現運行時錯誤。 該錯誤告訴我,至少有一個對象必須實現IComparible,我可以看到,因為我使用.OrderBy()方法的匿名類型。

那麼有沒有辦法用Lambda的方式完成我想要的?





lambda