2012-02-07 7 views
2

私はこの方法では、このLINQクエリがあります。LINQ:連結された文字列のリストにバインドする方法

public List<String> GetListNameUsers() 
{ 
    using (var context = new UCDataContext()) 
    { 
     return (from c in context.Users 
       select (c.LastName + " " + c.FirstName)).ToList(); 
    } 
} 

をしかし、これは動作しません。 FirstName + "" + LastNameで構成された文字列を返したい。

次のように私は、DropDownListにこのメソッドの結果を結合しています:

<asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="UsersODS" 
    DataTextField="LastName" DataValueField="IDUser" /> 

DropDownListがデータバインドさされているとき、フィールド姓が認識されません。

どうすればこの問題を解決できますか?

ありがとうございます。

ルイージ

+2

特にあなたが "これが動作しない" とはどういう意味ですか?何が問題なのですか?このLINQはSQLか何ですか? –

+0

-1あなたのコメントの1つで、実際にこのクエリをドロップダウンにバインドすると問題が発生する –

+0

DataBinding: 'System.String'には 'LastName'という名前のプロパティが含まれていません' 説明: DataTextField =「姓」 ルイージ – Ciupaz

答えて

1

まずレコードをフェッチ(ToListメソッドを使用して)、その後クライアント側で文字列の連結を行う

public List<String> GetListNameUsers() 
{ 

using (var context = new UCDataContext()) 
{ 
    return context.Users 
        .Select(c=>new {c.LastName, c.FirstName}) 
        .ToList() 
        .Select(c=>c.LastName + " " + c.FirstName) 
        .ToList(); 
} 

} 
0

問題は、あなたのコンテキストプロバイダがLINQ表現することを意味するデータベース、ということですSQLクエリに変換する必要があります。 SQLクエリジェネレータは、文字列連結の適切なSQLへの変換をサポートしていない可能性があります。代わりに、単純な古いリストにユーザーを変換して、代わりにそのリストで選択を実行することができます。以下のような

何か:

public List<String> GetListNameUsers() 
{ 

using (var context = new UCDataContext()) 
{ 
    var users = (from c in context.Users.ToList() 
      select (c.LastName + " " + c.FirstName)).ToList(); 
} 

} 
10
public IList GetListNameUsers() 
{ 
    using (var context = new UCDataContext()) 
    { 
     return (from c in context.Users 
       select new { 
        Name = c.LastName + " " + c.FirstName, 
        IDUser = c.IDUser 
        } 
       ).ToList(); 
    } 
} 

<asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="UsersODS" 
    DataTextField="Name" DataValueField="IDUser" /> 
+1

パーフェクト、そんなにエイドリアンをありがとう:未処理の例外 の問題は、私が思うに、私のDropDownListコントロールは、この特性を持っているということです! – Ciupaz

+1

@Ciupazこれで受け入れチェックマークを一度押します。いい加減にして。 –

+0

これは最も適切な答えのようですが、誰かがそのようにマークしてください。ここで重要なことは、データバインディングの目的で使用できる相関IDも含まれている複雑なオブジェクト(一連の連結された文字列値とは対照的に)を選択していることです。 –

関連する問題