2012-01-25 7 views
0

LINQマージリストからテキストファイルを作成するには?私は2 LINQツーSQLのリストを持っていると私は使用して1つのリストにマージ

var mergedList = List1.Union(List2); 

私は連合のコマンドは、リスト内のすべてのdupesを排除することを想定しています。そうですか?とにかく、私は、マージされたリストの内容をcsvファイルに書き込もうとしています。私はリストを呼び出すしようとすると、私はエラーを取得しています:

WriteToCSVFile cf = new WriteToCSVFile(mergedList); 

、これは私が私のクラスを構築する方法である:

public WriteToCSVFile(IEnumerable<T> mergedList) 

私はここで間違って何をしているのですか?

ところで、これは私が取得していますエラーがあります:あなたはより多くの情報が必要な場合は

The type arguments for method 'WriteToCSVFile.WriteToCSVFile(System.Collections.Generic.IEnumerable<T>)' cannot be inferred from the usage. Try specifying the type arguments explicitly. 
The type or namespace name 'T' could not be found (are you missing a using directive or an assembly reference?) 

、私に知らせてください。そして、事前に感謝します。ジェネリック型は、コンストラクタから推測することはできませんので、あなたが

public class WriteToCSVFile<T> 
{ 
    public WriteToCSVFile(IEnumerable<T> mergedList) 
    { 

    } 

    ... 
} 

し、それを呼び出して、あなたのクラスは、一般的なようにする必要があり

答えて

3

は、一般的な引数の型を指定します。

var cf = new WriteToCSVFile<TheTypeOfElementsInYourList>(mergedList); 

型推論は、メソッドでのみ動作し、あなたはextension method

public static class CsvExtensions 
{ 
    public static void WriteToCSVFile<T>(this IEnumerable<T> list) 
    { 
     ... 
    } 
} 

と書くことができます。

mergedList.WriteToCSVFile(); 

ああ、私は心からあなたを行う、あなたがnot rolling your own CSV parserであることを願っていますか?

+0

として定義されなければならない

List list1= new List(); 

として定義されていると思います。 2つのLINQリストをマージした後、どのようにテーブルオブジェクトを保持できますか?私はそれがそうだと思ったが、そうではないようだ。 –

+0

@inquisitive_one、確かにこれは新しい質問に値する。 –

0

匿名型は、ジェネリックメソッドの型パラメータとして使用できません。

+0

提案がありますか? –

+0

結果クラスを明示的に定義します。 –

0

あなたの方法は一般的な方法であるため、一般的でないリストを渡しているようです。私はあなたのリストの種類が、別のスレッドへの質問かもしれません

List<yourType> list1 = new List<yourType>(); 
+0

はい、そうです。 、 USdb.USsectorsにussect参加USdb.UScompaniesでuscompから「VARのList1 = uscomp.sector_code上 がussect.sector_codeが新しい { uscomp.company_nameを選択 等しい:これは私が私のLINQリストを作成するために使用しているものですuscomp.ticker、 ussect.description } –

関連する問題