如何获取所选值的Id?
How to get the Id of the selectedvalue?
我有具有以下值的 DropDownList:
ddl.SelectedValue = { Id = 234, Name = "ABC Name" }
如何获取Id的值?
我使用 WinForms 和 RadDropDownList
试试这个:
public int GetId(object obj)
{
var anon = new { Id = 0, Name = string.Empty };
var obj2 = MakeSameType(obj, anon);
return obj2.Id;
}
public static T MakeSameType<T>(object obj, T anonymous)
{
return (T)obj;
}
像这样使用它:
int id = GetId(ddl.SelectedValue);
如果 有效,这要归功于 C# 编译器如何在单个类型中 "condensed" 等效匿名类型。
请注意,此解决方案非常脆弱
如果你 add/remove/rename 匿名类型的 属性 , GetId
将会中断(你必须保持 var anon = new {...}
完美 对齐)。如果将创建匿名类型集合的方法移动到另一个程序集,它也会中断(因为只有同一程序集中的匿名类型被编译器"unified")。
一般来说,您不应该 具有"escape" 方法的匿名类型。匿名类型应该保留在它定义的方法中。直接赋值为控件的DataSource
是自找麻烦
如果您觉得懒惰并且不想为键值创建类型,请使用 Tuple
:
var tuple = Tuple.Create(something, somethingelse, somethingstillelse);
var value1 = tuple.Item1;
var value2 = tuple.Item2;
var value3 = tuple.Item3;
等等。
由于您使用的是匿名类型,所以它变得有点复杂。但是,您可以将 SelectedValue 转换为动态,并从那里提取 'Id':
dynamic selectedValue = ddl.SelectedValue;
int id = selectedValue.Id;
但我建议为这种情况声明您自己的 class 或结构。
我更改了 LINQ 查询
来自:
var query = (from q in tableq where ...
select new {Id = q.Id, Name = q.Name});
至:
var query = (from q in tableq where ...
select q);
...然后将其更改为:
table1.Id = (ddl.SelectedValue as tableq).Id == null ? table1.Id : (ddl.SelectedValue as tableq).Id;
我有具有以下值的 DropDownList:
ddl.SelectedValue = { Id = 234, Name = "ABC Name" }
如何获取Id的值?
我使用 WinForms 和 RadDropDownList
试试这个:
public int GetId(object obj)
{
var anon = new { Id = 0, Name = string.Empty };
var obj2 = MakeSameType(obj, anon);
return obj2.Id;
}
public static T MakeSameType<T>(object obj, T anonymous)
{
return (T)obj;
}
像这样使用它:
int id = GetId(ddl.SelectedValue);
如果 有效,这要归功于 C# 编译器如何在单个类型中 "condensed" 等效匿名类型。
请注意,此解决方案非常脆弱
如果你 add/remove/rename 匿名类型的 属性 , GetId
将会中断(你必须保持 var anon = new {...}
完美 对齐)。如果将创建匿名类型集合的方法移动到另一个程序集,它也会中断(因为只有同一程序集中的匿名类型被编译器"unified")。
一般来说,您不应该 具有"escape" 方法的匿名类型。匿名类型应该保留在它定义的方法中。直接赋值为控件的DataSource
是自找麻烦
如果您觉得懒惰并且不想为键值创建类型,请使用 Tuple
:
var tuple = Tuple.Create(something, somethingelse, somethingstillelse);
var value1 = tuple.Item1;
var value2 = tuple.Item2;
var value3 = tuple.Item3;
等等。
由于您使用的是匿名类型,所以它变得有点复杂。但是,您可以将 SelectedValue 转换为动态,并从那里提取 'Id':
dynamic selectedValue = ddl.SelectedValue;
int id = selectedValue.Id;
但我建议为这种情况声明您自己的 class 或结构。
我更改了 LINQ 查询
来自:
var query = (from q in tableq where ...
select new {Id = q.Id, Name = q.Name});
至:
var query = (from q in tableq where ...
select q);
...然后将其更改为:
table1.Id = (ddl.SelectedValue as tableq).Id == null ? table1.Id : (ddl.SelectedValue as tableq).Id;