0

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

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

这是行不通的,因为布尔函数(字符串源名称)无法更改为 sql 请求。在 linq to sql 中使用 c# 函数我需要做什么?

4

3 回答 3

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;
于 2013-04-01T10:32:26.073 回答
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;
}

看看它是否有效

于 2013-04-01T10:35:07.513 回答
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;
    }
于 2013-04-01T10:40:18.757 回答