2015-11-01 2 views
3

я следующий класс, который наследует IEnumerableIEnumerable Concat недостающее, не содержит определение для «Concat»

public class LinesEnumerable : IEnumerable<Point> 
{ 
    protected readonly IPointSeries _pointSeries; 
    protected readonly ICoordinateCalculator<double> _xCoordinateCalculator; 
    protected readonly ICoordinateCalculator<double> _yCoordinateCalculator; 
    protected readonly bool _isDigitalLine; 

    /// <summary> 
    /// Initializes a new instance of the <see cref="LinesEnumerable" /> class. 
    /// </summary> 
    /// <param name="pointSeries">The point series.</param> 
    /// <param name="xCoordinateCalculator">The x coordinate calculator.</param> 
    /// <param name="yCoordinateCalculator">The y coordinate calculator.</param> 
    /// <param name="isDigitalLine">if set to <c>true</c> return a digital line .</param> 
    public LinesEnumerable(IPointSeries pointSeries, ICoordinateCalculator<double> xCoordinateCalculator, ICoordinateCalculator<double> yCoordinateCalculator, bool isDigitalLine) 
    { 
     _pointSeries = pointSeries; 
     _xCoordinateCalculator = xCoordinateCalculator; 
     _yCoordinateCalculator = yCoordinateCalculator; 
     _isDigitalLine = isDigitalLine; 
    } 

    /// <summary> 
    /// Returns an enumerator that iterates through a collection. 
    /// </summary> 
    /// <returns> 
    /// An <see cref="T:System.Collections.IEnumerator" /> object that can be used to iterate through the collection. 
    /// </returns> 
    public virtual IEnumerator<Point> GetEnumerator() 
    { 
     return _isDigitalLine ? 
      (IEnumerator<Point>)new DigitalLinesIterator(_pointSeries, _xCoordinateCalculator, _yCoordinateCalculator) : 
      new LinesIterator(_pointSeries, _xCoordinateCalculator, _yCoordinateCalculator); 
    } 

    /// <summary> 
    /// Returns an enumerator that iterates through a collection. 
    /// </summary> 
    /// <returns> 
    /// An <see cref="T:System.Collections.IEnumerator" /> object that can be used to iterate through the collection. 
    /// </returns> 
    IEnumerator IEnumerable.GetEnumerator() 
    { 
     return GetEnumerator(); 
    } 
} 

Однако, когда я пытаюсь сделать следующее:

linesEnumerable = linesEnumerable.Concat(new[] { new Point(viewportWidth, lastYCoordinate) }); 

это говорит «System.Collections.IEnumerable» не содержит определения для «Concat» и наилучшего метода перегрузки. «System.Linq.Queryable.Concat (System.Linq.IQueryable, System.Collections.Generic.IEnumerable)» имеет некоторые недопустимые аргументы

У меня уже есть пространство имен System.Linq

Кто-нибудь знает, почему это происходит?

+0

Убедитесь в использовании System.Linq имен. Он содержит класс Enumerable, который содержит методы расширения для класса IEnumerable. –

+0

Что такое 'linesEnumerable'? Это 'IEnumerable' или' IEnumerable '? – haim770

+0

это IEnumerable user1034912

ответ

1

Попробуйте добавить следующие пространства имен, а также:

using System.Collections; 
using System.Collections.Generic; 
+0

Все еще ничего ... той же проблемы ... Я добавил все эти – user1034912

+1

@ user1034912, где вы их добавили? Пожалуйста, покажите, как вы определяете переменную 'linesEnumerable' –

+0

Lol dmitry ... спасибо, что вы правы ... глупо меня – user1034912