動態地,我想採用像「GPARank」這樣的字符串屬性並更改它的值。動態鏈接,更改列表中的每個項目的屬性
通常,我會
var rank = gpa.ForEach(x => x.GPARank = i);
但在這種情況下,我不知道我在編譯時改變其性質。我嘗試修改Marc Gravell的代碼Dynamic LINQ OrderBy on IEnumerable<T>供我使用,但我的大腦爆炸了。
謝謝!
使用反射想通了,還是要一個動態的LINQ表達式的解決方案
gpa.ForEach(x => x.GetType().GetProperty(_ColumnRank).SetValue(x, i += 1 , null));
我能弄清楚如何做到這一點使用反射。但是,如果任何人有時間或願意告訴我如何使用動態LINQ與運行時表達式來做到這一點,我真的很想知道如何做到這一點。
它是怎麼來的,你「不知道你在編譯時改變哪個屬性」? – GianT971
我有一個擁有20多個排名屬性的類,當用戶過濾掉並重新排序時,我想用linq做這個,而不是打到數據庫。 – bladefist
我不接受鍵盤上的大腦炸彈的責任。接下來,LINQ主要是查詢,而不是變異。在4.0中,表達式允許賦值,但簡單的委託會更容易。我現在不在PC上,但如果您願意,我可以在明天添加代表版本。我不確定Expression版本是否值得,因爲AFAIK沒有提供商會使用它,所以它最終只不過是一個棘手的方式來做一個委託。 –