如何在c#中使用Linq从DataSet中获取数据?

时间:2014-12-27 19:45:40

标签: c# linq

我有以下代码,

我正在尝试编写一个Linq查询来从DataSet中获取数据,或者从List中获取数据,但不幸的是,当我尝试使用Linq的关键字ie(from,select,where)时,框架告诉我存在语法错误。

例如,如果我在tab中的表中编写句子 .AsEnumerable()select; 框架表示无法找到类型或命名空间名称'from'。

我是Linq的新手,所以请任何人指导我并帮助我解决这个问题。

任何页面,链接教程可以帮助我学习Linq将不胜感激。

using System;
using System.Linq;
using System.Linq.Expressions;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Data.Common;
using System.Globalization;

namespace linqToDataSet
{
    class Program
    {
        static void Main(string[] args)
        {

            string connectionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename='C:\Users\Spider Wep\Documents\linqTodataset.mdf';Integrated Security=True;Connect Timeout=30";
            using (SqlConnection c = new SqlConnection(connectionString))
            {
                c.Open();
                // 2
                // Create new DataAdapter
                using (SqlDataAdapter a = new SqlDataAdapter(
                    "SELECT * FROM [Table]", c))
                {
                    // 3
                    // Use DataAdapter to fill DataTable
                    DataSet t = new DataSet();
                    a.Fill(t);

                    DataTable tab = t.Tables["Table"];
                    List<int> integers = new List<int> { 1,2,3};
                }
            }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

当您使用select时,您需要选择某些内容,例如:

var rows = (from Table in tab.AsEnumerable() select Table);

重要的是要注意LINQ使用延迟执行,这意味着在您使用foreach迭代结果之前不会执行此查询,或者使用某种方法立即强制执行ToListToArray

如果您对此不熟悉,可能需要查看一些有用的资源:

答案 1 :(得分:-2)

SqlConnection conn = new SqlConnection();
conn.ConnectionString = 
  @"Data Source=ALIPC;initial catalog=TrainingDatabase;integrated security=True";       

SqlCommand cmd = new SqlCommand();
cmd.CommandText = "select * from question";
cmd.Connection = conn;
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);            
return dt;

//   you can call this method wherever

classname c=new classname();

foreach(datarow dr in c.methodname().rows)
{
    user u=new user();
    u.userid = dr["userid"];
    list.add(u);
}
return list;