3 回答

TA貢獻1864條經驗 獲得超6個贊
假設您從文件中獲取輸入,您可以簡單地創建一個字典,其中 Key 是第一個子字符串,并且在讀取文件時將子字符串添加到字典中(如果不存在)。最后,值將包含以該鍵開頭的整行,但僅一次
Dictionary<string, string> keys = new Dictionary<string,string>();
foreach(string line in File.ReadLines("yourInputFile.csv"))
{
if(!keys.ContainsKey(line.Split(',')[0]))
keys.Add(line.Split(',')[0], line);
// or, if you want only the second element
//keys.Add(line.Split(',')[0], line.Split(',')[1]);
}
現在,您可以通過簡單的操作輕松檢索獨特的線條
string[] values = keys.Values.ToArray();
當然,所有這些分割都可以只執行一次,添加一個中間數組變量,然后使用它
Dictionary<string, string> keys = new Dictionary<string,string>();
foreach(string line in File.ReadLines("yourInputFile.csv"))
{
var splittedLine = line.Split(',');
if(!keys.ContainsKey(splittedLine[0])
keys.Add(splittedLine[0], line);
// or, if you want only the second element
//keys.Add(splittedLine[0], splittedLine[1]);
}

TA貢獻1828條經驗 獲得超3個贊
您是否考慮過使用 group by 和 split
IEnumerable<string> ids = new List<string> {
"968934,655,814",
"968934,123,814"
};
ids = from i in ids
group i by i.Split(',')[0] into g
select g.FirstOrDefault();

TA貢獻1821條經驗 獲得超6個贊
使用 LINQ 和 GroupBy,您可以按字符串的第一段進行分組,如果有多個項目具有相同的第一段,則將其刪除。
var items = list
.Select(s => new
{
FirstPart = s.Substring(0, s.IndexOf(',')),
String = s
})
.GroupBy(s => s.FirstPart)
.SelectMany(g => g.Count() == 1
? new[] { g.First().String }
: g.Select(x => x.String.Substring(x.FirstPart.Length + 1)))
.ToList();
- 3 回答
- 0 關注
- 160 瀏覽
添加回答
舉報