Похоже, вы хотите сравнить дату и время в .NET с точностью до миллисекунды с датой и временем SQL с точностью до миллисекунды.
При тестировании похоже, что SQL, сгенерированный LINQ To SQL, имеет дефект: он неправильно округляет внутреннее хранилище тиков до строкового представления.
Я отправил это в Microsoft Connect: https://connect.microsoft.com/VisualStudio/feedback/details/589054 Попробуйте репродукцию!
Чтобы обойти этот дефект, в котором миллисекунды в вашем DateTime
неправильно округлены в сгенерированном SQL, рассмотрите возможность выбора каждого элемента вашей даты и сравнения каждого элемента (что, я знаю, смешно):
DateTime d = DateTime.Parse("Jan 1 2010 09:44:33.0110");
var t = m.Msgs.Where(mm =>
mm.CreatedOn.Value.Date == d.Date
&& mm.CreatedOn.Value.Hour == d.Hour
&& mm.CreatedOn.Value.Minute== d.Minute
&& mm.CreatedOn.Value.Second == d.Second
&& mm.CreatedOn.Value.Millisecond == d.Millisecond);