/// <summary>
/// 검색 조건과 내용으로 테이블에 있는 데이터를 검색하는 메서드
/// </summary>
/// <param name="value">검색 조건</param>
/// <param name="input">검색 내용</param>
/// <param name="sort">오름차순 or 내림차순
/// true이면 내림차순, false이면 오름차순</param>
/// <returns>검색 결과</returns>
public List<FixtureItemData> SearchTableData(int value, string input, bool sort)
{
Func<FixtureItemData, bool> condition; //검색 조건
Func<FixtureItemData, object> order; //정렬 기준
string search = input.ToLower(); //소문자로 변환
if (value < 0 || value >= searchDropdown.options.Count)
return new List<FixtureItemData>();
switch (searchDropdown.value) //Dropdown value에 따라 조건 설정
{
case 0: // 제조사
condition = item => item.company.ToLower().Contains(search);
order = item => item.company;
break;
case 1: // 조명 이름
condition = item => item.name.ToLower().Contains(search);
order = item => item.name;
break;
case 2: // 채널
condition = item => item.channelList.Count.ToString().Contains(search);
order = item => item.channelList.Count;
break;
default: //모드
condition = item => item.mode.ToLower().Contains(search);
order = item => item.mode;
break;
}
int i = 1;
IEnumerable<FixtureItemData> result;
if (isLibraryTab)
result = originTableData.Where(condition);
else
result = favoriteTableData.Where(condition);
result = sort ? result.OrderByDescending(order) : result.OrderBy(order);
result = result.Select(x => new FixtureItemData
{
key = x.key,
no = i++.ToString(),
company = x.company,
name = x.name,
channelList = x.channelList,
mode = x.mode,
isSelect = x.isSelect
});
return result.ToList();
}
댓글 없음:
댓글 쓰기