基类的参考Expression能传一个lambda表达式

using System;
using System.Collections.Generic;
using
System.Data.Entity.Infrastructure;
using System.Linq;
using
System.Linq.Expressions;
using System.Text;

namespace P04DAL
{
/// <summary>
/// 用户表 操作类
///
</summary>
public class User
{
///
<summary>
/// 数据上下文对象
/// </summary>

P05MODEL.LeaveWordBoradEntities db = new P05MODEL.LeaveWordBoradEntities();

//public User()
//{
//
//Predicate<P05MODEL.User> a = delegate(P05MODEL.User u) { return u.uId ==
1; };

// //this.DelBy(ab => ab.uId == 1);

// //P05MODEL.User u = new P05MODEL.User() { uId = 1, uLoginName =
"asdfasdf" };
// //this.Modify(u, "uLoginName");

// //List<P05MODEL.User> list = this.GetListBy(u2 =>
u2.uId > 1 && u2.uIsDel == false);

// //List<P05MODEL.User> listSorted =
this.GetListBy<int>(u3 => u3.uId > 1, u4 => u4.uId);

//}

#region 1.0 新增 实体 +int Add(P05MODEL.User model)
///
<summary>
/// 新增 实体
/// </summary>
///
<param name="model"></param>
///
<returns></returns>
public int Add(P05MODEL.User
model)
{
db.Users.Add(model);
return
db.SaveChanges();//保存成功后,会将自增的id设置给 model的 主键属性,并返回受影响行数
}

#endregion

#region 2。0 根据 用户 id 删除 +int Del(int uId)
///
<summary>
/// 根据 用户 id 删除
/// </summary>

/// <param name="uId"></param>
///
<returns></returns>
public int Del(int uId)

{
P05MODEL.User usr = new P05MODEL.User() { uId = uId };

db.Users.Attach(usr);
db.Users.Remove(usr);

return db.SaveChanges();
}
#endregion

#region 3.0 根据条件删除 +int DelBy(Expression<Func<P05MODEL.User,
bool>> delWhere)
/// <summary>
/// 3.0
根据条件删除
/// </summary>
/// <param
name="delWhere"></param>
///
<returns></returns>
public int
DelBy(Expression<Func<P05MODEL.User, bool>> delWhere)

{
List<P05MODEL.User> listDeleting =
db.Users.Where(delWhere).ToList();
listDeleting.ForEach(u =>
db.Users.Remove(u));
return db.SaveChanges();
}

#endregion

#region 4.0 修改 +int Modify(P05MODEL.User model, params string[]
proNames)
/// <summary>
/// 4.0 修改,如:
///
P05MODEL.User u = new P05MODEL.User() { uId = 1, uLoginName = "asdfasdf" };

/// this.Modify(u, "uLoginName");
/// </summary>

/// <param name="model">要修改的实体对象</param>
/// <param
name="proNames">要修改的 属性 名称</param>
///
<returns></returns>
public int Modify(P05MODEL.User
model, params string[] proNames)
{
DbEntityEntry entry
= db.Entry<P05MODEL.User>(model);
entry.State =
System.Data.EntityState.Unchanged;
foreach (string proName in
proNames)
{
entry.Property(proName).IsModified
= true;
}
return db.SaveChanges();
}

#endregion

#region 5.0 根据条件查询 +List<P05MODEL.User>
GetListBy(Expression<Func<P05MODEL.User,bool>> whereLambda)

/// <summary>
/// 5.0 根据条件查询 +List<P05MODEL.User>
GetListBy(Expression<Func<P05MODEL.User,bool>> whereLambda)

/// </summary>
/// <param
name="whereLambda"></param>
///
<returns></returns>
public List<P05MODEL.User>
GetListBy(Expression<Func<P05MODEL.User, bool>> whereLambda)

{

return db.Users.Where(whereLambda).ToList();

}
#endregion

#region 5.1 根据条件 排序 和查询 + List<P05MODEL.User>
GetListBy<TKey>
/// <summary>
/// 5.1 根据条件 排序
和查询
/// </summary>
/// <typeparam
name="TKey">排序字段类型</typeparam>
/// <param
name="whereLambda">查询条件 lambda表达式</param>
/// <param
name="orderLambda">排序条件 lambda表达式</param>
///
<returns></returns>
public List<P05MODEL.User>
GetListBy<TKey>(Expression<Func<P05MODEL.User, bool>>
whereLambda, Expression<Func<P05MODEL.User, TKey>> orderLambda)

{
return
db.Users.Where(whereLambda).OrderBy(orderLambda).ToList();
}

#endregion

#region 6.0 分页查询 + List<P05MODEL.User>
GetPagedList<TKey>
/// <summary>
/// 6.0 分页查询
+ List<P05MODEL.User> GetPagedList<TKey>
///
</summary>
/// <param
name="pageIndex">页码</param>
/// <param
name="pageSize">页容量</param>
/// <param
name="whereLambda">条件 lambda表达式</param>
/// <param
name="orderBy">排序 lambda表达式</param>
///
<returns></returns>
public List<P05MODEL.User>
GetPagedList<TKey>(int pageIndex, int pageSize,
Expression<Func<P05MODEL.User, bool>> whereLambda,
Expression<Func<P05MODEL.User, TKey>> orderBy)
{

return db.Users.Where(whereLambda).OrderBy(orderBy).Skip((pageIndex - 1) *
pageSize).Take(pageSize).ToList();
}
#endregion

}

}

时间: 2024-11-07 11:11:08

基类的参考Expression能传一个lambda表达式的相关文章

C++_派生类的构造函数及派生类和基类之间的特殊关系

派生类和基类的概念及派生类构造函数的原理: 创建一个叫做TableTennisPlayer的基类,记录会员的名字和是否有球桌. 1 //声明一个基类 2 class TableTennisPlayer 3 { 4 private: 5 string firstname; 6 string lastname; 7 bool hasTable; 8 9 public: 10 TableTennisPlayer(); 11 void Name() const; 12 bool HasTable() c

Python异常详解:基类、具体异常、异常层次结构

在 Python 中,所有异常必须为一个派生自 BaseException 的类的实例. 在带有提及一个特定类的 except 子句的 try 语句中,该子句也会处理任何派生自该类的异常类(但不处理 它 所派生出的异常类). 通过子类化创建的两个不相关异常类永远是不等效的,既使它们具有相同的名称. 下面列出的内置异常可通过解释器或内置函数来生成.除非另有说明,它们都会具有一个提示导致错误详细原因的“关联值”. 这可以是一个字符串或由多个信息项(例如一个错误码和一个解释错误的字符串)组成的元组.

c++之虚函数和基类指针

1. 基类指针虽然获取派生类对象地址,却只能访问派生类从基类继承的成员 1 #include <iostream> 2 using namespace std; 3 4 //通过基类指针只能访问从基类继承的成员 5 class A 6 { 7 public: 8 A(char x) 9 { 10 this->x = x; 11 } 12 //void virtual who() //基类定义虚函数,则派生类的重定义版本默认为虚函数 13 void who() //除非定义虚函数,否则基类

C++虚基类详解

1.虚基类的作用从上面的介绍可知:如果一个派生类有多个直接基类,而这些直接基类又有一个共同的基类,则在最终的派生类中会保留该间接共同基类数据成员的多份同名成员.在引用这些同名的成员时,必须在派生类对象名后增加直接基类名,以避免产生二义性,使其惟一地标识一个成员,如    c1.A::display( ).在一个类中保留间接共同基类的多份同名成员,这种现象是人们不希望出现的.C++提供虚基类(virtual base class )的方法,使得在继承间接共同基类时只保留一份成员.现在,将类A声明为

6.1 numbers--数值抽象基类

6. 数值和数学库 本库主要提供了数值和数学相关的函数处理以及数据类型.numbers模块定义了抽象的数值类型,math和cmath模块主要包括不同的数学函数,比如用来计算浮点数和复数.decimal模块支持十进制数值表示,可以用任何精度进行运算. 6.1 numbers--数值抽象基类 本模块主要按文档(PEP 3141)定义了数值抽象基类. class numbers.Number 数值类的基类,如果你只是想检查一个参数x是否是Number类型,可以使用函数isinstance(x, Num

基类显式继承接口,类继承基类时又继承同一接口,引发接口方法混乱(显式继承接口的弊端)

基类BaseOutput显式继承了一个接口IOutput,之后类TrackOutput继承BaseOutput,同一时候又继承了IOutput接口.假定IOutput有方法Output,这样在TrackOutput中就有两个Output方法,一个源于基类BaseOutput,于个源于接口IOutput.这样就引发了混乱.要怎么办?先看以下的一段代码 interface IOutput { void output(); } class BaseOutput : IOutput { void IOu

iOS数据持久化之二——归档与设计可存储化的数据模型基类

iOS数据持久化之二--归档与设计可存储化的数据模型基类 一.引言 在上一篇博客中,我们介绍了用plist文件进行数据持久化的方法.虽然简单易用,但随着开发的深入,你会发现,这种方式还是有很大的局限性.试想,如果我们可以将用户的登录返回信息模型,游戏中角色的属性信息模型进行直接的持久化存取,那是不是非常爽的事,幸运的是,我们可以通过归档,来设计一个这样的数据模型. 二.先来精通归档吧 归档也是iOS提供给开发者的一种数据存储的方式,事实上,几乎所有的数据类型都可以通过归档来进行存取.其存储与读取

asp.net mvc webform和razor的page基类区别

接触过asp.net mvc的都知道,在传统的webform的模式下,page页面的基类是这样声明的: <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="ViewPage" %> 如果是partial view的话,则是这样声明的: <%@ Control Language="C#" Inherits=&q

基类派生类

看了c#的教程,也上网络上搜索基类与派生类的概念,一直没有一个很明确的定义.弄得偶一直很迷糊,现在搜索到c++的教程里倒是有比较明确的说明,特意贴在这里,帮助自己理解. 继承机制提供了无限重复利用程序资源的一种途径. 继承使得我们得以用一种简单的方式来定义新类.如果我们定义了一个哺乳动物类,包括哺乳动物的一些普通属性和方法,然后再定义一个狗类, 有没有必要重头开始定义呢?实际上这是没有必要的,因为狗是哺乳动物的一种特殊动物,定义狗类可以沿用哺乳动物类的所需的属性和方法,只需加上狗的颜色属性和狗尾