C# 从LINQ中的表值SQL函数返回列表?

C# 从LINQ中的表值SQL函数返回列表?,c#,sql-server,linq,wcf,C#,Sql Server,Linq,Wcf,我有一个使用Entity Framework 6_上下文的WCF服务,它成功地调用了我的SQL db中的许多函数,但是,我在调用表值函数时遇到了问题 My函数接受单个字符串参数user,并使用where子句创建一个视图,以确定该用户可以看到什么。这与预期一样有效,例如: SELECT * FROM ises.fnarticles ('ANDREW') 我现在尝试从我的WCF服务调用该函数,并将结果返回到列表: public List<vwArticle> GetArticles

我有一个使用Entity Framework 6_上下文的WCF服务,它成功地调用了我的SQL db中的许多函数,但是,我在调用表值函数时遇到了问题

My函数接受单个字符串参数user,并使用where子句创建一个视图,以确定该用户可以看到什么。这与预期一样有效,例如:

SELECT * FROM ises.fnarticles ('ANDREW')
我现在尝试从我的WCF服务调用该函数,并将结果返回到列表:

  public List<vwArticle> GetArticlesByAnalyst(string user)
    {
         return ((IObjectContextAdapter)_Context).ObjectContext.CreateQuery<vwArticle>("SELECT VALUE ISESModel.Store.fnarticles(@userName) FROM {1}", 
         new ObjectParameter("userName", user)).ToList();
    }

我不能返回一个列表,也不能返回一个vwArticle对象。同样的错误…

这个方法很冗长,但实现了我所需要的。似乎您可以使用LINQ查询一个表值函数,就好像它是一个表一样

public List<vwArticle> GetArticlesByAnalyst(string user)
    {
        List<vwArticle> ArticlesByAnyalist = new List<vwArticle>();

        var query = from a in _Context.fnarticles(user)
                    select a;

        foreach (var a in query)
        {
            var article = new vwArticle
            {
                ArticleId = a.ArticleId,
                ArticleTitle = a.ArticleTitle,
                Country = a.Country,                   
                userUpdated = a.userUpdated,
                userCreated = a.userCreated,
                dateCreated = a.dateCreated,
                dateUpdated = a.dateUpdated,
                versionDate = a.versionDate    
            };

            ArticlesByAnyalist.Add(article);
        }

        return ArticlesByAnyalist;
    }
然后调用我的方法传入用户名并查询列表:

    public List<vwArticle> GetArticles(string filter)
    {
      var ArticlesByAnalyst = GetArticlesByAnalyst("GEMMA");

      var query = from a in ArticlesByAnalyst 
                  where blah blah                        
                  select a;

      return query.ToList();  
    }
    public List<vwArticle> GetArticles(string filter)
    {
      var ArticlesByAnalyst = GetArticlesByAnalyst("GEMMA");

      var query = from a in ArticlesByAnalyst 
                  where blah blah                        
                  select a;

      return query.ToList();  
    }