从Linq查询结果构建原始SQL字符串?

时间:2015-03-16 14:06:20

标签: c# sql-server linq

我需要从SQL Server表中进行选择,并将结果连接成SQL字符串,所以我最终得到var sqlString = "Select blah from myTable where blah blah order by blah"

enter image description here

这是我的LINQ。我正在尝试按照我需要它们的顺序选择列。将它们连成1个字符串:

  var query = (from a in _Context.tbArticleTypeAssets
                      where a.ArticleType == ArticleType
                      select new {sqlQuery = a.ColSelection + "" + a.FromTable + "" + a.whereclause + "" + a.orderBY});

         string queryResult = query.ToString();

结果是我不想要的Linq输出。我只想要字符串的值。有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:2)

linq查询将返回一个集合,您必须使用First()FirstOrDefault()来获取该项目:

 string queryResult = query.FirstOrDefault().sqlQuery;

更好的是检查null:

string queryResult =  query.FirstOrDefault() != null ? query.FirstOrDefault().sqlQuery : string.Empty;

答案 1 :(得分:0)

试试这个:

 var query = _Context.tbArticleTypeAssets
        .Where(a=>a.ArticleType == ArticleType)
        .Select(a=>a.ColSelection + "" + a.FromTable + "" + a.whereclause + "" + a.orderBY)
        .ToList();

或者如果您的查询总是只返回一条记录,那么您可以这样做:

 var query = _Context.tbArticleTypeAssets
        .Where(a=>a.ArticleType == ArticleType)
        .Select(a=>a.ColSelection + "" + a.FromTable + "" + a.whereclause + "" + a.orderBY)
        .First();