Linq to SQL:DataTable.Rows [0] [“ColumnName”]等效

时间:2008-10-09 13:55:00

标签: c# linq c#-3.0

考虑一下:

var query = from r in this._db.Recipes
            where r.RecipesID == recipeID
            select new { r.RecipesID, r.RecipesName };

如何在不使用for循环的情况下在query对象中获取单个列?

基本上:如何将DataTable.Rows[0]["ColumnName"]翻译成Linq语法?

4 个答案:

答案 0 :(得分:2)

目前还不清楚你在寻找什么,因为你的两个样本兼容。

尽我所能,你想要的是:

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

答案 1 :(得分:2)

string name = this._db.Recipes.Single(r => r.RecipesID == recipeID).RecipesName;

答案 2 :(得分:1)

这是解决问题的方法:

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

答案 3 :(得分:0)

抱歉,误解了你的问题。正如其他人所说,你可以使用ToList()来获取List。如果你需要的只是第一个,只需使用:


query.First().ColumnName

或者如果你想避免空列表上的异常:


var obj = query.FirstOrDefault();
if (obj != null)
   obj.ColumnName;

原始答案(所以评论有意义):

使用Linq to Datasets。基本上会是这样的:


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