2015-10-14 2 views
2

У меня есть модель для обработки расчета балла на основе различных правилLINQ Как сделать BETWEEN условия

Scoremaster 
    ---------- 
    Grade 
    MinScore 
    MaxScore 
    GradeRule 

Некоторые образцы данные представлены здесь

A1 4.5 5  5 
    A2 4 4.5 5 
    B1 3.5 4  5 
    B2 3 3.5 5 
    C 0 3  5 
    A1 8 10 10 
    A2 6 8  10 
    B1 5 6  10 
    C 0 5  10 
    A1 16 20 20 
    A2 12 16 20 
    B1 8 12 20 
    C 0 8  20 

Алгоритма я планирую это так

string FindGrade(double score,string rule) 
{ 

List<Scoremaster> scores=(from p in dbcontext.Scoremasters 
          where p.GradeRule==rule 
          select p).ToList(); 

//how can i check the score input of the function belongs to which category from this list using Linq 

//example FindGrade(3,5) = B2 FindGrade(4,5) = A2 
//example FindGrade(7,10) = A2 FindGrade(4,10) = C 
//example FindGrade(17,20) = A1 FindGrade(10,20) = B1        
} 

, основанный на входе, я могу фильтровать до определенной категории. Следующим шагом является определение счет в каком диапазоне на основе свойств minScore и MaxScore, а затем возвращают соответствующий Grade, и я изо всех сил, чтобы сделать это с помощью Linq

+0

Почему бы не использовать '' && оператор с 'minscore'? 'где p.GradeRule == rule && (оценка => p.MinScore && score <= p.Maxscore)' –

+0

И если вы хотите, чтобы полная реализация 'between' [здесь реализована Jon Skeet] (http: // stackoverflow.com/questions/1447635/linq-between-operator) –

ответ

2

Делают это, как показано ниже:

string FindGrade(double score,string rule) 
{ 
    List<Scoremaster> scores = (from p in dbcontext.Scoremasters 
         where p.GradeRule==rule && score>= p.MinScore && score<= p.MaxScore 
         select p).ToList(); 
} 

Надежда помогает.

1

Try This

public static class Extensions 
{ 
    public IQueryable<T> FindMinimum<T>(this IQueryable<T> source,string rule) 
     where T : YourEntityType 
    { 
     return source.Where(p => p.GradeRule==rule && score>= p.MinScore && score<= p.MaxScore); 
    } 
} 

Использование как этот

var scores= db.myTable.FindMinimum("rule").ToList(); 
Смежные вопросы