C# Linq到SQL:DataTable.Rows[0][“ColumnName”]等效

C# Linq到SQL:DataTable.Rows[0][“ColumnName”]等效,c#,linq,c#-3.0,C#,Linq,C# 3.0,考虑这一点: var query = from r in this._db.Recipes where r.RecipesID == recipeID select new { r.RecipesID, r.RecipesName }; 如何在不使用for循环的情况下获取查询对象中的各个列 基本:如何将DataTable.Rows[0][ColumnName]转换为Linq语法?抱歉,误解了您的问题。正如其他人所说,您可以使用ToList来获取列

考虑这一点:

var query = from r in this._db.Recipes
            where r.RecipesID == recipeID
            select new { r.RecipesID, r.RecipesName };
如何在不使用for循环的情况下获取查询对象中的各个列


基本:如何将DataTable.Rows[0][ColumnName]转换为Linq语法?

抱歉,误解了您的问题。正如其他人所说,您可以使用ToList来获取列表。如果您只需要第一个选项,只需使用:


query.First().ColumnName
或者,如果要避免空列表上出现异常:


var obj = query.FirstOrDefault();
if (obj != null)
   obj.ColumnName;
原始答案,因此评论有意义:

使用。基本上是这样的:


var query = from r in yourTable.AsEnumerable()
select r.Field<string>("ColumnName");

对不起,我误解了你的问题。正如其他人所说,您可以使用ToList来获取列表。如果您只需要第一个选项,只需使用:


query.First().ColumnName
或者,如果要避免空列表上出现异常:


var obj = query.FirstOrDefault();
if (obj != null)
   obj.ColumnName;
原始答案,因此评论有意义:

使用。基本上是这样的:


var query = from r in yourTable.AsEnumerable()
select r.Field<string>("ColumnName");

因为你们的两个样品是兼容的,所以你们要找的东西真的不清楚

据我所知,你想要的是:

var rows = query.ToList();
string name = rows[0].RecipesName;

因为你们的两个样品是兼容的,所以你们要找的东西真的不清楚

据我所知,你想要的是:

var rows = query.ToList();
string name = rows[0].RecipesName;

这就是解决问题的方法:

DataContext dc = new DataContext();

var recipe = (from r in dc.Recipes 
              where r.RecipesID == 1
              select r).FirstOrDefault();

if (recipe != null)
{
    id = recipe.RecipesID;
    name = recipe.RecipesName;
}

这就是解决问题的方法:

DataContext dc = new DataContext();

var recipe = (from r in dc.Recipes 
              where r.RecipesID == 1
              select r).FirstOrDefault();

if (recipe != null)
{
    id = recipe.RecipesID;
    name = recipe.RecipesName;
}

您可以使用Single或First。不同之处在于,如果LINQ查询返回多行,Single将引发异常。您可以使用Single或First。区别在于,如果LINQ查询返回多行,Single将抛出异常。