簡體   English   中英

IEnumerable的 <T> 使用匿名方法

[英]IEnumerable <T> with anonymous methods

我不知道如何擺脫這個錯誤?

錯誤1使用通用類型'System.Collections.Generic.IEnumerable'需要1個類型參數C:\\ Users \\ huzaifa.gain \\ documents \\ visual studio 2010 \\ Projects \\ VendInvoiceImport \\ VendInvoiceImport \\ Program.cs 34 24 VendInvoiceImport

private static IEnumerable<string , string >  DistinctInvoiceNumber(DataTable   VendorInvoiceStagingTable)
       {
           var InvoiceLinecollection = VendorInvoiceStagingTable.AsEnumerable().Select(t => new {  number = t.Field<string>(VendInvoice.Number),LineNumber = t.Field<string>(VendInvoice.LineNumber)}).Distinct();
        return InvoiceLinecollection;
      }

在此處輸入圖片說明

您的Linq查詢返回一個匿名類型序列,但是方法不能返回匿名類型。 您有幾種選擇:

  • 返回IEnumerable<Tuple<string, string>>

     private static IEnumerable<Tuple<string, string>> DistinctInvoiceNumber(DataTable VendorInvoiceStagingTable) { var InvoiceLinecollection = VendorInvoiceStagingTable .AsEnumerable() .Select(t => Tuple.Create(t.Field<string>(VendInvoice.Number), t.Field<string>(VendInvoice.LineNumber))) .Distinct(); return InvoiceLinecollection; } 
  • 根據另一個答案的建議返回IDictionary<string, string> (假設查詢不返回重復的鍵)

     private static IDictionary<string, string> DistinctInvoiceNumber(DataTable VendorInvoiceStagingTable) { var InvoiceLinecollection = VendorInvoiceStagingTable .AsEnumerable() .Select(t => Tuple.Create(t.Field<string>(VendInvoice.Number), t.Field<string>(VendInvoice.LineNumber))) .Distinct() .ToDictionary(t => t.Item1, t => t.Item2); return InvoiceLinecollection; } 
  • 為此創建一個具有2個字符串屬性的類,並返回該類的序列

     private static IEnumerable<InvoiceLine> DistinctInvoiceNumber(DataTable VendorInvoiceStagingTable) { var InvoiceLinecollection = VendorInvoiceStagingTable .AsEnumerable() .Select(t => new InvoiceLine(t.Field<string>(VendInvoice.Number), t.Field<string>(VendInvoice.LineNumber))) .Distinct(); return InvoiceLinecollection; } 

為什么不使用Dictionary<string, string>呢?

private static Dictionary<string , string >  DistinctInvoiceNumber(DataTable   VendorInvoiceStagingTable)
       {
           var InvoiceLinecollection = VendorInvoiceStagingTable.AsEnumerable().Select(t => new {  number = t.Field<string>(VendInvoice.Number),LineNumber = 
                 t.Field<string>(VendInvoice.LineNumber)}).ToDictionary();
            return InvoiceLinecollection;
          }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM