实体框架选择查询

本文关键字:查询 选择 框架 实体 | 更新日期: 2023-09-27 18:30:44

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

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

userid
username
password
email

现在需要像where email = "" and password = ""这样的选择

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

实体框架选择查询

将 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的可读性较差。我认为这更多的是个人品味,取决于你的背景。

编辑:

dbContext 应替换为您在设置 Entitiy 框架 EDMX 或 Code First 类时为 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();

使用 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()..

必须使用 Linq 查询,例如

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

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

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();

按如下方式使用 linq query

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;
        }
你可以

试试这个

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();
}

希望这可能会有所帮助。