Создайте пользовательский атрибут для этого
internal class Metadata
{
[MappingColumn (Type="Key")]
public int ContractId { get; set; }
[Required]
[MappingColumn (Type="Name")]
public string Name { get; set; }
}
создать два метода с этой подписью
string GetKeyColumName(Type type) //will perfom a loop on the type properties custom attribute and return the first with the type Key
string GetNameColumnName(Type type)//will perfom a loop on the type properties custom attribute and return the first with the type Name
и заполните ваш ddl следующим образом:
using (var context = new IMToolDataContext())
{
ddlContracts.DataValueField = GetKeyColumnName(typeof(Metadata));
ddlContracts.DataTextField = GetNameColumnName(typeof(Metadata));
ddlContracts.DataSource = context
.AllContracts
.OrderBy(o => o.Name);
ddlContracts.DataBind();
}
EDIT:
Атрибут столбца, на который я ссылаюсь, является атрибутом yourcunstom, а не атрибутом Linq. Хорошо, я должен был назвать его MappingColumn, его можно объявить так:
public class MappingColumnAttribute : System.Attribute
{
public string Type {get;set;}
}