2015-10-20 48 views
0

我正在使用FileHandler實用工具將CSV文件轉換爲對象(Lore)。在提取數據後,其目的是爲數據字段someTemp消除重複項。我正在使用LINQ查詢來計算不同的值,但它給出了以下錯誤: 'object'不包含'someTemp'的定義,並且沒有找到接受類型'object'的第一個參數的擴展方法'someTemp' (您是否缺少使用指令或裝配參考?)在C#中使用LINQ計算不同值時出現錯誤

有人可以請幫忙。

FileHelperAsyncEngine engine = new FileHelperAsyncEngine(typeof(Lore)); 
      using (engine.BeginReadFile(filePath)) 
      { 
       var distinct = engine.GroupBy(x => x.someTemp).Select(y => y.Last());enter code here 
       // The engine is IEnumerable 
       foreach (Lore lor in engine) 
       { 
        StringBuilder str = new StringBuilder(); 
        str.Append(lor.RowNumber + " "); 
        str.Append(lor.LocalDate + " "); 
        str.Append(lor.LocalTime); 
        Console.WriteLine("{0} {1} {2}",lor.RowNumber,lor.LocalDate,lor.LocalTime); 
        listBox1.Items.Add(str); 
       } 
      } 

[DelimitedRecord(",")] 
    [IgnoreFirst] 
    public class Lore 
    { 
     public int RowNumber; 

     [FieldConverter(ConverterKind.Date,@"MM/dd/yyyy")] 
     public DateTime LocalDate; 

     [FieldConverter(ConverterKind.Date,"HH:mm:ss")] 
     public DateTime LocalTime; 

     public int Batch_Size; 

     public int someTemp { get; set; } 

    } 

回答

1

如果你在編譯時知道你的類型,你應該使用通用版本,否則你將不得不施放結果。

var engine = new FileHelperAsyncEngine<Lore>(); 
0

nVoigt的回答是正確的,通用版本是你需要的,我認爲它會爲你處理鑄件。如果沒有,正確的路線是:

var distinct = engine.GroupBy(x => x.someTemp).Select(y => (y.Last()) as Lore)

var distinct = engine.GroupBy(x => x.someTemp).Select(y => y.Last()).Cast<Lore>()

,才應使用這種結構,如果你不知道在編譯時的類型,然後你會將Lore替換爲類型參數T

相關問題