3

と、最初の1..n文字がプロセスから除外されるさまざまな行が含まれているvar lines = IEnumerable<string>とします。linesたとえば、「*」、「Eg」、「Sample」などで始まる行。

除外トークンのリストは可変であり、実行時にのみ認識されるため、

lines.Where(l => !l.StartsWith("*") && !l.StartsWith("E.g.") && ...

やや問題になる。

どうすればこれを達成できますか?

4

2 に答える 2

8

LINQ を使用する場合:

 List<string> exceptions = new List<string>() { "AA", "EE" };

 List<string> lines = new List<string>() { "Hello", "AAHello", "BHello", "EEHello" };

 var result = lines.Where(x => !exceptions.Any(e => x.StartsWith(e))).ToList();
 // Returns only "Hello", "BHello"
于 2013-04-06T13:21:07.397 に答える
2

これを試して:

List<string> lines = new List<string>();    //add some values
List<string> exclusion=new List<string>();  //add some values

var result = lines.Except(exclusion, new MyComparer());

どこ:

public class MyComparer : IEqualityComparer<string>
{
    public bool Equals(string x, string y) { return x.StartsWith(y); }

    public int GetHashCode(string obj) { //some code }
}
于 2013-04-06T13:21:15.463 に答える