If you know this third part, how about adding to your anonymous constructor:
var _collectCSGData = from line in File.ReadAllLines(path) let parts = line.Split('|'); select new {ID = parts[0], Assignment = parts[1], Data = parts[2]};
Or, if it’s just “Last item regardless of the number of items”
var _collectCSGData = from line in File.ReadAllLines(path) let parts = line.Split('|'); select new {ID = parts[0], Assignment = parts[1], Data = parts[part.length-1]};
source share