簡體   English   中英

如何從lambda表達式中獲取唯一字符串

[英]How to get unique string from a lambda expression

我想使用通用存儲庫和memcached緩存EF4結果。 這一切都很有效,除了我需要一個lambda表達式的唯一鍵表示。

例如,對通用存儲庫的調用可以是:

Repository<User> userRepository = new Repository<User>();
string name = "Erik";
List<User> users_named_erik = userRepository.Find(x => x.Name == name).ToList();

在我的通用存儲庫函數中,我需要從lambda表達式中創建一個唯一的鍵,以將其存儲在memcached中。

所以我需要一個可以做到這一點的功能

string GetPredicate(Expression<Func<T,bool>> where)
{

}

函數的結果應該是這個字符串x=> x.Name == "Erik" 而不是像我從ToString()方法得到的+<>c__DisplayClass0)

提前致謝。

看看這篇博客文章

基本上,您希望對表達式進行“部分評估”以考慮閉包引入的值。 MSDN演練 (在“添加表達式評估程序”標題下)具有博客條目引用的代碼,用於將未評估的閉包成員合並到結果字符串中。

現在,它可能不適用於復雜的表達式,但看起來它會讓你在路上。 請記住,它沒有規范化表達式。 x => x.Name == "Erik"在功能上等同於x => "Erik" == x.Name (以及所有其他變體)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM