Something like:
var sorted = array.OrderBy(x => x[1])
.ToArray(); // Or ToList, or nothing...
It's not clear what you mean by "select the data". Personally I'd try to create a more strongly-typed data model, rather than just having an array of strings for each row. You can do that easily enough with LINQ as well, of course:
var sorted = array.Select(row => new Item {
Id = int.Parse(row[0]),
Category = row[1],
Name = row[2]
});
.OrderBy(x => x.Category)
.ToArray();
EDIT: For a query expression version of the first:
var sorted = (from x in array
orderby x[1]
select x).ToArray();
As you can see, it's more cluttered than using the extension methods directly. It's worth being comfortable with both forms, so you can pick the simplest one in any given situation.