C 中Lambda表示式動態拼接生成工具類

2021-09-24 11:26:00 字數 4470 閱讀 9782

本文****這篇文章,先做下記錄。

public static class lambdautil

/// /// lambda表示式:t=>false

///

///

public static expression> false()

/// /// lambda表示式:t=>t.propname

/// 多用於order排序

///

/// 引數型別

/// 返回型別

/// 屬性名

///

private static expression> order(string propname)

/// /// lambda表示式:t=>t.propname==propvalue

/// 多用於where條件

///

/// 引數型別

/// 屬性名稱

/// 屬性值

///

public static expression> equal(string propname, object propvalue)

/// /// lambda表示式:t=>t.propname!=propvalue

/// 多用於where條件

///

/// 引數型別

/// 屬性名稱

/// 屬性值

///

public static expression> notequal(string propname, object propvalue)

/// /// lambda表示式:t=>t.propname

/// 引數型別

/// 屬性名稱

/// 屬性值

///

public static expression> lessthan(string propname, object propvalue)

/// /// lambda表示式:t=>t.propname<=propvalue

/// 多用於where條件

///

/// 引數型別

/// 屬性名稱

/// 屬性值

///

public static expression> lessthanorequal(string propname, object propvalue)

/// /// lambda表示式:t=>t.propname>propvalue

/// 多用於where條件

///

/// 引數型別

/// 屬性名稱

/// 屬性值

///

public static expression> greaterthan(string propname, object propvalue)

/// /// lambda表示式:t=>t.propname>=propvalue

/// 多用於where條件

///

/// 引數型別

/// 屬性名稱

/// 屬性值

///

public static expression> greaterthanorequal(string propname, object propvalue)

/// /// lambda表示式:t=>

/// 多用於where條件

///

/// 引數型別

/// 屬性名稱

/// 屬性值陣列

///

public static expression> in(string propname, string propvalues)

);foreach (string item in propvalues)

// 生成lambda表示式

return expression.lambda>(constant, new parameterexpression );

}/// /// lambda表示式:t=>

/// 多用於where條件

///

/// 引數型別

/// 屬性名稱

/// 屬性值陣列

///

public static expression> notin(string propname, string propvalues)

);foreach (string item in propvalues)

// 生成lambda表示式

return expression.lambda>(expression.not(constant), new parameterexpression );

}/// /// lambda表示式:t=>t.propname.contains(propvalue)

/// 多用於where條件

///

/// 引數型別

/// 屬性名稱

/// 屬性值

///

public static expression> contains(string propname, string propvalue)

);// 建立乙個帶引數方法expression

methodcallexpression methodcall = expression.call(member, method, constant);

// 生成lambda表示式

return expression.lambda>(methodcall, parameter);

}/// /// lambda表示式:t=>t.propname.contains(propvalue)

/// 多用於where條件

///

/// 引數型別

/// 屬性名稱

/// 屬性值

///

public static expression> startwith(string propname, string propvalue)

);// 建立乙個帶引數方法expression

methodcallexpression methodcall = expression.call(member, method, constant);

// 生成lambda表示式

return expression.lambda>(methodcall, parameter);

}/// /// lambda表示式:t=>t.propname.contains(propvalue)

/// 多用於where條件

///

/// 引數型別

/// 屬性名稱

/// 屬性值

///

public static expression> endswith(string propname, string propvalue)

);// 建立乙個帶引數方法expression

methodcallexpression methodcall = expression.call(member, method, constant);

// 生成lambda表示式

return expression.lambda>(methodcall, parameter);

}/// /// lambda表示式:!(t=>t.propname.contains(propvalue))

/// 多用於where條件

///

/// 引數型別

/// 屬性名稱

/// 屬性值

///

public static expression> notcontains(string propname, string propvalue)

);// 建立乙個帶引數方法expression

methodcallexpression methodcall = expression.call(member, method, constant);

// 生成lambda表示式

return expression.lambda>(expression.not(methodcall), parameter);

}/// /// lambda表示式:t=>

/// 多用於where條件

///

/// 左側條件

/// 右側條件

///

public static expression> and(expression> left, expression> right)

/// /// lambda表示式:t=>

/// 多用於where條件

///

/// 左側條件

/// 右側條件

///

public static expression> or(expression> left, expression> right)

}

動態拼接Lambda表示式2

新增類 region lambda expression 拼接方式1 expression表示式樹 public class lambdaparameterebinder expressionvisitor 過載引數訪問的方法,訪問表示式樹引數,如果字典中包含,則取出 表示式樹引數 protecte...

C 中Lambda表示式

c 語言還是比較常見的東西,這裡我們主要介紹c lambda表示式,包括介紹乙個lambda就是乙個delegate,乙個delegate指向乙個方法等方面。你有沒有接觸過c lambda表示式,有沒有覺得匿名方法這東西很不錯,減少了很多 阿,但是匿名方法的使用還並不人性化,什麼是人性化呢?比如你可...

C 中lambda表示式

在介紹lambda表示式之前,我想先介紹以下c 標準庫所支援的傳統謂詞以及傳統謂次的不足,而由此才引入的lambda表示式 謂詞是個可呼叫的表示式,其返回結果是乙個能作為條件的值。謂詞分為一元和二元,一元的可呼叫物件只能有乙個引數,二元只能有倆個引數 我們以一元謂詞舉例 c 標準庫中的find if...