Определение имен столбцов определенно быстрее - для сервера. Но если
тогда Вы более обеспечены липкий с ВЫБОРОМ *. В нашей платформе интенсивное использование ВЫБОРА * позволяет нам представлять новый веб-сайт управляемое поле содержания таблице, давая все это преимуществ CMS (управление версиями, рабочий процесс/одобрения, и т.д.), только касаясь кода в нескольких точках, вместо пары дюжины точек.
я знаю, что гуру DB собираются ненавидеть меня за это - идут вперед, проваливают меня - но в моем мире, время разработчика недостаточно, и циклы ЦП в изобилии, таким образом, я корректирую соответственно, что я сохраняю и что я трачу впустую.
<View>
<RowLimit>1</RowLimit>
<Query>
<OrderBy>
<FieldRef Name='Created' Ascending='False' />
</OrderBy>
</Query>
</View>
Основываясь на этом ответе , который я дал на связанный вопрос , я бы предложил следующий запрос:
SPListItem lastItem;
try
{
using (SPSite objSite = new SPSite(sSiteUrl))
{
using (SPWeb objWeb = objSite.OpenWeb())
{
SPList objList = objWeb.Lists["MainHeads"];
SPQuery objQuery = new SPQuery();
objQuery.Query = "<OrderBy><FieldRef Name='HeadID' Ascending='False' /></OrderBy><RowLimit>1</RowLimit>";
objQuery.Folder = objList.RootFolder;
// Execute the query against the list
SPListItemCollection colItems = objList.GetItems(objQuery);
if (colItems.Count > 0)
{
lastItem = colItems[0];
}
}
}
}
catch (Exception ex)
{
...
}
return lastItem;
Это предполагает, что вы выполняете CAML в коде. ЕСЛИ нет, см. F. Акино ответ .
<View>
<RowLimit>1</RowLimit>
<Query>
<OrderBy>
<FieldRef Name='ID' Ascending='False' />
</OrderBy>
</Query>
</View>