实体框架选择查询

时间:2013-09-10 11:58:48

标签: c# asp.net entity-framework entity-framework-5

我正在使用Entity Framework进行插入,更新,删除,选择数据的简单应用程序 我已经插入,删除并选择了所有数据。

现在我想选择带有两个字段过滤器的条件 对于例如:我有

的表格
userid
username
password
email

现在需要选择where email = "" and password = ""

我知道如何在SQL中编写查询但没有entity framework的线索 还需要将此结果存储在数据表和循环解决方案中,以用于学习目的 这可以帮助很多初学者

6 个答案:

答案 0 :(得分:5)

将Linq To Entities与lambda表达式一起使用:

var result = dBContext.Account.Where(a=> a.email == "" && a.password =="").ToList();

使用Linq To Entities的方式不那么花哨:

var result = (from a in dBContext.Account
              where a.email == "" && a.password ==""
              select a).ToList();

Lambda表达式大部分时间都在使用。 有些人发现lambda的可读性较差。 我认为这更符合您的个人品味。

修改

在设置Entitiy框架EDMX或代码优先类时,dbContext应替换为您为dbContext / Entities提供的名称。

帐户应替换为您的表/实体的名称

要循环并编辑您可以执行的结果:

foreach(var account in results)
{
   //do something with the properties
   account.email = "test@updated.com"
}

//store the changes again in the db
dbContext.SaveChanges();

答案 1 :(得分:2)

使用linq ex:

List<User> result = dbContext.Users.Where(o=> o.email == "" && o.password=="").ToList();

foreach(User u in result)
{
// do stuff
}

User u = new User();
u.Email = "mail@mail.com";

dbContext.Users.Add(u);
dbContext.Save(); //I think its Save()..

答案 2 :(得分:1)

必须使用Linq查询,如

var data= dBContext.Account.Where(a=> a.email == "" && a.password =="").ToList();

.ToList()会将您的全部数据提供给您的where条件或过滤条件。 现在,您可以返回DataTable并根据for值轻松应用DataTable条件。

答案 3 :(得分:1)

DataTable tempData = (DataTable)grdRecords.DataSource;

var query = from r in tempData.AsEnumerable()
            where r.Field<string>("UserName") != "TestUsername" &&
                  r.Field<string>("Password") != "TestPassword"
            select r;

DataTable newDT = query.CopyToDataTable();

答案 4 :(得分:1)

使用linq查询如下

IList<Users> Users = dbContext.Users.Where(x=> x.email == "" && x.password=="").ToList();

然后如果你想转换成DataTable,只需调用以下泛型方法来转换它

        public DataTable ToDataTable<T>(IList<T> data)// T is any generic type
        {
            PropertyDescriptorCollection props = TypeDescriptor.GetProperties(typeof(T));

            DataTable table = new DataTable();
            for (int i = 0; i < props.Count; i++)
            {
                PropertyDescriptor prop = props[i];
                table.Columns.Add(prop.Name, prop.PropertyType);
            }
            object[] values = new object[props.Count];
            foreach (T item in data)
            {
                for (int i = 0; i < values.Length; i++)
                {
                    values[i] = props[i].GetValue(item);
                }
                table.Rows.Add(values);
            }
            return table;
        }

答案 5 :(得分:1)

你可以试试这个

databasenameEntities db = new databasenameEntities ();

tablename exist= db.tablename.where(p=>p.email=="txtemail.text" && p.password=="txtpassword.text");

if(exist.count>0)

{

txtuserid.text=Convert.toInt32(exist.userid);

txtusername.Text=exist.username;

....

.....

db.saveChanges();

}

希望这可能有所帮助。