LinqToSql请求中的C#函数

时间:2013-04-01 10:25:16

标签: c# linq linq-to-sql

我有一个问题。我需要在linq中使用c#函数来执行sql请求。 例如:

      void request()
      {

            var db = new DataClasses1(connectionString);
            var result = 
                from a in db.Stats
                where Function(a.SourceName)
                select a;
        }
        bool Function(string sourceName)
        {

            return true;
        }

这不起作用,因为布尔函数(字符串sourceName)无法更改为sql请求。我需要做什么才能在linq to sql中使用c#函数?

3 个答案:

答案 0 :(得分:1)

如果无法将函数转换为linq2sql语句,则无法执行此操作,但可以避免使用非SQL函数。

最后必须要执行 sql

您可以做的就是避免使用下面显示的非SQL语句,

假设a是一个字符串,但你想要它是整数,

var int_a = int.Parse(a);
var result = from a in db.Stats
             where a==int_a
             select a;

答案 1 :(得分:1)

你的数据库不知道Function,所以分两步完成。

void request()
{
    var db = new DataClasses1(connectionString);
    var result = from a in db.Stats
                 select a;

    var finalResult = from b in a.AsEnumerable()
                      where Function(b.SourceName)
                      select b;
}
bool Function(string sourceName)
{
    return true;
}

看看它是否有效

答案 2 :(得分:1)

您只需要在AsEnumerable查询中添加linq

  void request()
  {

        var db = new DataClasses1(connectionString);
        var result = 
            from a in db.Stats.AsEnumerable()
            where Function(a.SourceName)
            select a;
    }
    bool Function(string sourceName)
    {

        return true;
    }