簡體   English   中英

如何獲取選定值的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#編譯器將等效匿名類型“壓縮”為單個類型。

請注意,此解決方案非常脆弱

如果添加/刪除/重命名匿名類型的屬性,則GetId將中斷(您必須使var anon = new {...} 完全對齊)。 如果將創建匿名類型集合的方法移至另一個程序集,該方法也將中斷(因為只有同一程序集中的匿名類型被編譯器“統一”)。

通常,您不應該具有“轉義”方法的匿名類型。 匿名類型應保留在定義的方法中。 直接將其分配為控件的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;

但是我建議在這種情況下聲明自己的類或結構。

我已經更改了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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM