you want to order by the items in the another list:
ProductProvider.GetProducts()
.Columns("DocumentName", "NodeGUID", "ProductName")
.WhereIn("NodeGuid", ListGuid.Split('\n').Select(p => p.Trim()).ToList())
.OrderBy(p => ListGuid.FindIndex(g => g == p.GUID)).ToList();
here is the test code:
var guidOrder = new List<Guid>()
{
Guid.Parse("faa9c937-5900-4544-a659-a55fdf2f2e40"),
Guid.Parse("16c3a215-38e5-4de8-8641-9587a6a6d710"),
Guid.Parse("840c418c-0f93-4d33-842d-25b96a21545e"),
Guid.Parse("6cb7778d-33e3-4bd5-afd3-c6e094d24026")
};
var listObjects = new List<MyListITem>()
{
new MyListITem() {Id = 1, GUID = Guid.Parse("840c418c-0f93-4d33-842d-25b96a21545e"), Name = "Peter"},
new MyListITem() {Id = 2, GUID = Guid.Parse("faa9c937-5900-4544-a659-a55fdf2f2e40"), Name = "Alex"},
new MyListITem() {Id = 3, GUID = Guid.Parse("16c3a215-38e5-4de8-8641-9587a6a6d710"), Name = "John"},
new MyListITem() {Id = 4, GUID = Guid.Parse("6cb7778d-33e3-4bd5-afd3-c6e094d24026"), Name = "Boris"},
};
var orderded = listObjects.OrderBy(x => guidOrder.FindIndex(w => w == x.GUID)).ToList();
orderded.ForEach(i => Console.Write("{0}\t{1}\t{2}\n", i.GUID, i.Id, i.Name));