2014-12-11 2 views
1

Предположим, у меня есть таблица в моей базе данных с именем Table1. У меня есть 3 колонки в Table1 имениПонимание базового для запросов Linq

FirstName 
SurName 
DOB 

В SQL я бы просто сделать select * from Table1, и он будет отображать все от этой конкретной таблицы. Однако я пытаюсь понять, как бы выбрать все значения из этой таблицы, используя Linq в C#. Table1 находится в базе данных, а front-end разрабатывается с использованием ASP.NET и C#. Кажется, я просто не могу об этом подумать. Мои знания о linq очень мало так что простите меня, если я делаю очевидную ошибку

+0

LINQ - это всего лишь язык запросов. Это не относится к базам данных. Я бы предложил вам взглянуть на ORM, как на Entity Framework, так как он может занять много работы для вас. На данный момент вы также можете отказаться от баз данных, просто используйте LINQ для базового массива в памяти. – Arran

+0

@Arran Веб-сайт, на котором я работаю в настоящее время, использует EF 6 Мне дали проект на полпути, поэтому нужно быстро привыкнуть. Я ценю ваши предложения – Code

+0

[LINQ] (http://msdn.microsoft.com/en-us/library/bb397926.aspx) означает Language Integrated Query - он используется для запроса чего-то интегрированного в язык. Например, вы можете запросить 'List <>', используя '.Where()'. На самом деле это не так много общего с базами данных. –

ответ

1

Ниже ссылки на интро к Linq

What is Linq and what does it do?

http://weblogs.asp.net/scottgu/using-linq-to-sql-part-1

Linq обеспечивает среднее запрашивая данные, но вам все равно необходимо предоставить средства Linq для доступа к этим данным - будь то через классы Linq2Sql, ADO, Entity Framework и т. д.

Я поклонник Entity Framewo rk (EF), где вы настраиваете объекты, которые представляют ваши данные, и используйте контекст для заполнения этих объектов.

это может выглядеть примерно так:

public class Table1 
{ 
    public string FirstName { get; set; } 
    public string SurName { get; set; } 
    public DateTime DOB { get; set; } 
} 

public class Table1Repository 
{ 
    private readonly MyEntities _context; 

    public Table1Repository() 
    { 
     this._context = new MyEntities(); 
    } 

    public IQueryable<Table1> Get() 
    { 
     return this._context.Table1; // in effect your "Select * from table1" 
    } 

    public IQueryable<Table1> GetById(DateTime dob) 
    { 
     return this._context.Table1.Where(w => w.DOB == dob); // pulls records with a dob matching param - using lambda here but there is also "query expression syntax" which looks more like sql 
    } 

}

Обратите внимание, что вы выполняете Linq запросов от контекста, который представляет данные, а не сама база данных. Linq очень мощный, но вам необходимо предоставить ему доступ к данным. Даже если эти данные - это xml, файл, база данных, что угодно!

+0

Спасибо за подробный ответ – Code

1

В Linq2Sql вы бы выбрать все поля довольно просто

Начиная с DataContext:

var db = new YourDataContext() 

И после того, что вы можете делать вещи, как

var myData = from row 
      in db.table1 
      select row 

Как показывают себя, ваши знания слишком ограничены. Ознакомьтесь с этой серией о L2S: http://weblogs.asp.net/scottgu/using-linq-to-sql-part-1

0

Поскольку вы используете EF6, вы можете прочитать свою таблицу с помощью LinqToEntity.

public ObservableCollection<Table1> ReadTable1() 
{    
    using (YourDBContext dc = new YourDBContext()) 
    { 
     var data = (from x in dc.Table1 
        select x); 

     return new ObservableCollection<Table1>(data); 
    }    
} 
+0

Почему вы выполняете бессмысленную проекцию данных? Просто опустите его, если у вас нет операции для выполнения. – Servy

Смежные вопросы