How should the compiler know that your request will return only one line? Suppose you change your data to include another carrot or no carrot at all - what would you expect.
, Single, . , First. , FirstOrDefault. , SingleOrDefault. , :
var s = from bt in rbt where
bt.Vegetable.VegiName.CompareTo("carrot") == 0 select bt;
var veg = s.Single();
Console.WriteLine("{0}{1}",veg.Vegetable.VegiName,veg.Name);
, :
var veg = rbt.Where(bt => bt.Vegetable.VegiName.CompareTo("carrot") == 0)
.Single();
Console.WriteLine("{0}{1}",veg.Vegetable.VegiName,veg.Name);