如果声明从linq查询中检索的数据

时间:2012-08-24 02:27:08

标签: c# asp.net linq

所以假设我正在使用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){ }

我怎样才能做到这一点?

由于

2 个答案:

答案 0 :(得分: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()来实现结果,然后执行条件。

答案 1 :(得分:0)

如果您的检查应该在sql中完成,那么Dave Markle的答案必须适合您。 如果要对某些返回的实体应用此检查,它应该看起来像这样:

  1. 通过foreach获取您的对象:

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

  2. 或使用linq对象:

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

相关问题