Почему функции Linq доступны для переменной, которая может иметь строку типа - PullRequest
5 голосов
/ 03 декабря 2010

Пожалуйста, помогите мне с этим вопросом.Я думал, что Linq работает над коллекцией или массивом.Почему Linq работает с одной строковой переменной.

Ответы [ 2 ]

6 голосов
/ 03 декабря 2010

LINQ To Objects работает в основном на IEnumerable<T>, каноническом интерфейсе для последовательностей указанного типа.System.String реализует IEnumerable<char>, что означает, что его можно рассматривать как последовательность символов.

[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class String : IComparable, 
    ICloneable, IConvertible, IComparable<string>, IEnumerable<char>, 
    IEnumerable, IEquatable<string> 

Сам LINQ - это шаблон , больше всего на свете.Это не ограничено IEnumerable<T> или IQueryable<T> в этом отношении.

1 голос
/ 03 декабря 2010

Ни того, ни другого. LINQ (для объектов) состоит из набора методов расширения, которые работают с IEnumerable<T> и / или IQueryable<T>.
поскольку тип string реализует IEnumerable<char>, string доступен для методов LINQ.

Thomas

...