0

渡されたリストの項目に一致するプログラムテーブルからレコードを返そうとしていますが、次のエラーが発生します。

引数タイプ「System.Nullable」はパラメータタイプ「System.Web.UI.WebControls.ListItem」に割り当てることができません

void PopulateEvents(List<ListItem> programs)
{
    var rows = from table in db.Events.AsEnumerable()
               where programs.Contains(table.ProgramID)
               select Events;
}
4

4 に答える 4

2

テーブルAsEnumerable()全体を停止し、を使用してクエリを実行するため、は使用しません。Eventslinq-to-objects

を削除することを選択したかどうかに関係なく、メソッドの代わりに演算子AsEnumerable()を使用するようにクエリを変更します。プロパティに一致するからプロパティを使用する必要があります。これでエラーメッセージが解決するはずです。AnyContainsListItemProgramID

 var rows = from table in db.Events
            where programs.Any(p => p.ID == table.ProgramID)
            select table;
于 2012-04-23T13:45:58.883 に答える
0

これを試して

void PopulateEvents(List<ListItem> programs) 
{     
       var rows = from table in db.Events.AsEnumerable()               
                  where programs.Cast<ListItem>().Select( y => y.Text).Contains(table.ProgramID.Value.ToString())                
                  select table; 
} 
于 2012-04-23T12:47:54.837 に答える
0

ProgramID列/プロパティEventsはnull許容です(データベース内)。このprograms.Containsチェックでは、 ListItemnull許容ではないが必要です。

状況に応じて、 nullを受け入れないようProgramIDに列/プロパティを変更するか、null許容でないものにEventsキャストすることができます。(または、null許容のListItemsのリストにしましょう: 。)table.ProgramIDListItemprogramsList<ListItem?>

編集:
Aducci'sは、私の提案を無効にするエレガントなソリューションです;-)。

于 2012-04-23T12:29:13.167 に答える
0
void PopulateEvents(List<string> programs)
{
    var rows = db.Events.Where(i => programs.Contains(i.ProgramID)).Select(i => db.Events);
}
于 2013-01-08T15:46:02.453 に答える