0

因此,假设我正在使用 linq 查询检索一些数据,如下所示:

DataContext db = new DataContext    

using(db)
{
    var test = from t in db.table1
               where t.col1 == Convert.ToInt32(HiddenField1.Value)
               select new
               {
                  t.col2,
                  t.col3
               };
}

然后我想检查一个条件是否不正确,例如:

if (col3 != something){ }

我怎样才能做到这一点?

谢谢

4

2 回答 2

2

你可能想要这样的东西:

DataContext db = new DataContext    

using(db)
{
    var test = from t in db.table1
               where t.col1 == Convert.ToInt32(HiddenField1.Value)
               select new
               {
                  t.col2,
                  CandyType = (t.col3 == "fudge") ? "It's Fudge" : "It's some other candy!"
               };

尽管使用实体框架,您可能会遇到框架无法将条件语句转换为 SQL 的问题。我相信这完全取决于您在条件语句中执行的操作,但是自从我接触 EF 以来已经有一段时间了。如果事实证明它无法将条件语句转换为 SQL,则必须通过调用 .ToList() 或 .ToArray() 来具体化结果,然后执行条件语句。

于 2012-08-24T02:31:04.433 回答
0

如果您的检查应该在 sql 中完成,那么 Dave Markle 的答案一定适合您。如果你想对一些返回的实体应用这个检查,它应该看起来像这样:

  1. 让你的对象通过foreach

    foreach(var o in test) {
    if(o.col3!= something) { ... } }

  2. 或对对象使用 linq:

    test.ToList().Where(o=>o.col3!=something);

于 2012-08-24T03:13:14.883 回答