Member 14196861 Ответов: 1

Как разделить один var на 3 var - LINQ запрос


ПРИВЕТ,

var abc = (от d в модели.Кандидаты выбирают d.Candidate_ID).Список();


В этом var abc я получаю 15 идентификаторов кандидатов.
Теперь мне нужно разделить 15 кандидатов на 3 части и назначить 3 разных Var.

Пожалуйста, помогите мне с запросами Linq.

Что я уже пробовал:

var abc = (от d в модели.Кандидаты выбирают d.Candidate_ID).Список();

1 Ответов

Рейтинг:
12

Maciej Los

Если я вас хорошо понимаю...

var a1 = Model.Candidates
    .Select(d=> d.Candidate_ID)
    .Take(5)
    .ToList();

var a2 = Model.Candidates
    .Select(d=> d.Candidate_ID)
    .Skip(5)
    .Take(5)
    .ToList(); 

var a3 = Model.Candidates
    .Select(d=> d.Candidate_ID)
    .Skip(10)
    .Take(5)
    .ToList(); 


В случае, если вы хотите создать пользовательскую разбиение на страницы, вы можете достичь этого, создав универсальный метод. Видеть:

void Main()
{
	List<Candidate> Candidates = GetCandidates();
	
	int j = 5;
	for(int i = 0; i<Candidates.Count; i+=j)
	{
		var data = GetPortion<Candidate>(Candidates, d=>d.Candidate_ID, i, j).ToList();
		data.Dump();
	}
		
}

// Define other methods and classes here
class Candidate
{
	public Guid Candidate_ID {get; set;}
}

IEnumerable<T> GetPortion<T>(IEnumerable<T> list, Func<T, object> orderByField, int curr_val, int NoOfRecordsToGet) where T: class
{
	return list.OrderBy(orderByField).Skip(curr_val).Take(NoOfRecordsToGet);
}


List<Candidate> GetCandidates()
{
	List<Candidate> candies = new List<Candidate>();
	for(int i = 0; i<28; i++)
		candies.Add(new Candidate(){Candidate_ID = Guid.NewGuid()});
	return candies;
}


Member 14196861

Что делать, если счетчик динамичен и меняется

Maciej Los

Если вы хотите получить определенную часть данных, вы должны создать пользовательский метод, который будет получать в качестве параметра: 1) количество данных для получения и 2) количество данных для пропуска. Затем вам нужно будет создать переменные в цикле for (...). Это все.

Maciej Los

Увидеть событий ответ.

Member 14196861

Метод 'пропустить' поддерживается только для сортированных входных в LINQ для сущностей. Метод 'OrderBy' должен быть вызван перед методом 'Skip'. - Застрял с этой ошибкой из приведенного выше кода

Maciej Los

См. обновленный ответ. Я улучшил общий метод сортировки данных. Ознакомиться с обновленными Main и метод тоже.

phil.o

5 б

Maciej Los

Спасибо.