Помогите с лямбда-выражением linq2sql - PullRequest
1 голос
/ 05 января 2010

В моей базе данных почти каждая таблица имеет свою собственную таблицу переводов. То есть У Sports есть таблица SportsTranslations со столбцами: SportId, LanguageId, Name. На данный момент я беру переводы как:

int[] defaultLanguages = { 1, 3 };
var query = from s in dc.Sports
            select new
                   {
                      sportName = s.SportsTranslations.Where(st => defaultLanguages.Contains(st.LanguageID)).First()
                   };

Интересно, возможно ли реализовать какой-то универсальный метод, чтобы я мог рефакторинг кода, как здесь:

var query = from s in dc.Sports
            select new
                   {
                      sportName = s.SportsTranslations.Translate()
                   };

1 Ответ

0 голосов
/ 07 января 2010

решаемая. Вот статический метод, который я написал:

public static class Extras
{    
    public static T Translate<T>(this IEnumerable<T> table) where T : class
        {
            try
            {
                return table.Where(
                    t => defaultLanguages.Contains(
                        (int)t.GetType().GetProperty("LanguageID").GetValue(t, null)
                    )
                ).First();
            }
            catch (Exception)
            {
                throw new ApplicationException(string.Format("No translation found in table {0}", typeof(T).Name));
            }
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...