5

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

现在我想使用两个字段的过滤器来选择 where 条件
例如:我有一个表

userid
username
password
email

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

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

4

6 回答 6

6

使用带有 lambda 表达式的 Linq To 实体:

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 应替换为您在设置实体框架 EDMX 或 Code First Classes 时为 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();
于 2013-09-10T12:06:08.897 回答
2

使用 linq 前:

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()..
于 2013-09-10T12:03:36.683 回答
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();

}

希望这可能会有所帮助。

于 2013-09-10T12:17:54.800 回答
1

必须使用 Linq 查询,例如

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

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

于 2013-09-10T12:08:23.600 回答
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();
于 2013-09-10T12:08:41.657 回答
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;
        }
于 2013-09-10T12:10:02.810 回答