저는 데이터 소스로 Entity Framework 6을 사용하고 있습니다.Linq - 첫 번째 이름으로 그룹화
공급 업체를 이름의 첫 글자로 나열하는 페이지를 만들었으므로 먼저 'A', 'B'등이 모두 있습니다.
이렇게하려면 두 개의 ListView 객체를 사용합니다. 쉽게 반복기가 될 수 있지만 중요하지는 않습니다.
내 공급 업체 목록이 광범위하지 않지만 필자가 데이터를 가져 오는 데 사용한 방법은 데이터 바인딩 중에 27 번 호출해야한다는 점에서 비용이 많이 듭니다. 나는 이것에 대해 갈 수있는 더 좋은 방법이 있다고 확신하지만, Linq에 관한 나의 길을 충분히 잘 모른다.
데이터를 그룹화 한 다음 그룹의 내용을 반복하는 방법이 있어야한다고 생각합니다.
다음은 중요한 코드 비트입니다. Linq의 자식 데이터와 데이터 바인딩 코드를 retreive합니다 : 나는 데이터를 그룹화하고 그룹의 내용을 통해 반복하는 방법이 있어야한다 생각하고
public static IEnumerable<Supplier> StartsWith(string firstLetter)
{
return Select() // select simply returns all data for the entity
.Where(x => x.Name.StartsWith(firstLetter, StringComparison.OrdinalIgnoreCase));
}
protected void ListViewAtoZ_ItemDataBound(object source, ListViewItemEventArgs e)
{
var item = e.Item;
if (item.ItemType == ListViewItemType.DataItem)
{
var alphanumeric = (string)item.DataItem;
var h2 = item.GetControl<HtmlGenericControl>("HtmlH2", true);
h2.InnerText = alphanumeric;
var childView = item.GetControl<ListView>("ListViewStartsWith", true);
childView.DataSource = LenderView.StartsWith(alphanumeric);
childView.DataBind();
}
}
protected void ListViewStartsWith_ItemDataBound(object source, ListViewItemEventArgs e)
{
var item = e.Item;
if (item.ItemType == ListViewItemType.DataItem)
{
var supplier = (Supplier)item.DataItem;
var litName = item.GetControl<Literal>("LiteralName", true);
litName.Text = supplier.Name;
}
}
void LoadData()
{
var alphanumerics = new string[]
{
"0 - 9","A","B","C","D","E","F","G","H","I","J","K","L",
"M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"
};
ListViewAtoZ.DataSource = alphanumerics;
ListViewAtoZ.DataBind();
}
내가 잘못 읽었나요, 아니면 실제로 이름 중 일부가''0 - 9 ''로 시작합니까? – Rawling
아니요, 당신은 그것을 잘못 읽지 않았습니다 - 저는이 시점에서 그 합병증을 방정식에 던지지 않기로했습니다. – dotnetnoob