-1

以下のSQLクエリをLINQクエリに変換しようとしています

Qry = "select Announcement, StartDate, Enddate,Annkey from
Announcements ";   Qry = Qry & " where Startdate <= #" & Today & "# " 
Qry = Qry & " and Enddate >= #" & Today & "# "  Qry = Qry + " order by
StartDate, Enddate";

今まで作ってきたもの -

public bool Selectdatafromannouncements()
        {


            List<Announcement> lstAnnounce = new List<Announcement>(
                from l in objVaccinationContext.Announcements
                where
                    l.StartDate.Value < DateTime.Today
                    && l.EndDate.Value < DateTime.Today
                orderby l.StartDate, l.EndDate
                select new (l.Announcement1, l.StartDate, l.EndDate, l.AnnouncementID)
                );


            return true;
        }

select new の近くでエラーが発生しました (タイプが予想されるので、私を助けてください私はLINQの初心者です

4

5 に答える 5

2

リストを作成するために、ここではコンストラクターは必要ありません。中かっこは匿名オブジェクトの作成に使用されるため、タイプの lstAnnounce を宣言する代わりにList<Announcement>、var キーワードを使用することをお勧めします。

だからあなたはこれを持つことができます:

var query = from l in objVaccinationContext.Announcements
                  where
                    l.StartDate.Value < DateTime.Today
                    && l.EndDate.Value < DateTime.Today
                orderby l.StartDate, l.EndDate
                select new {l.Announcement1, l.StartDate, l.EndDate, l.AnnouncementID };
var lstAnnounce = query.ToList();

Annoucement オブジェクトのリストが必要な場合:

var query = 
                from l in objVaccinationContext.Announcements
                where
                    l.StartDate.Value < DateTime.Today
                    && l.EndDate.Value < DateTime.Today
                orderby l.StartDate, l.EndDate
                select l;
List<Announcement> lstAnnounce = query.ToList();
于 2012-09-05T06:49:26.370 に答える
1

objVaccinationContext.Announcementsがオブジェクトのコレクションである場合Announcement、匿名型や List の構成を使用する必要がない場合は、次のようにするだけです。

List<Announcement> lstAnnounce = (
    from l in objVaccinationContext.Announcements
    where
        l.StartDate.Value < DateTime.Today && 
        l.EndDate.Value < DateTime.Today
    orderby l.StartDate, l.EndDate
    select l)
    .ToList();
于 2012-09-05T06:44:29.677 に答える
0

元のクエリで使用する

Startdate <= Today  and Enddate >= Today 

一方、あなたのLinqは持っています

l.StartDate.Value < DateTime.Today
&& l.EndDate.Value < DateTime.Today

あなたのトップクエリがあなたが求めているものであると仮定すると、これはあなたのために働きますか:

 List<Announcement> lstAnnounce = 
            (from l in objVaccinationContext.Announcements
            where
                l.StartDate.Value <= DateTime.Today
                && l.EndDate.Value >= DateTime.Today
            orderby l.StartDate, l.EndDate
            select new Announcement
                 {
                     Announcement1 = l.Announcement1,
                     StartDate = l.StartDate,
                     EndDate = l.EndDate,
                     AnnouncementId = l.AnnouncementId
                 }).ToList();
于 2012-09-05T10:52:13.250 に答える
0

問題は、実行時にあるタイプの項目をanonymousのリストに挿入していることです。あなたがする必要があるのは、タイプのインスタンスを明示的に作成することです:Announcementselect new (l.Announcement1, l.StartDate, l.EndDate, l.AnnouncementID)Announcement

List<Announcement> lstAnnounce = 
objVaccinationContext.Announcements
                     .OrderBy(l => l.StartDate)
                     .ThenBy(l => l.EndDate)
                     .Where(l => l.StartDate.Value < DateTime.Today &&
                                 l.EndDate.Value < DateTime.Today)
                     .Select(l => new Announcement
                     {
                         Announcement1 = l.Announcement1,
                         AnnouncementId = l.AnnouncementId,
                         EndDate = l.EndDate,
                         StartDate = l.StartDate
                     })
                     .ToList();
于 2012-09-05T06:44:08.810 に答える
0

select new (l.Announcement1, l.StartDate, l.EndDate, l.AnnouncementID)

間違っている

匿名タイプを試してください:

select new {var1 = l.Announcement1, var2 = l.StartDate, vr3 = l.EndDate, var4 = l.AnnouncementID}
于 2012-09-05T06:34:02.547 に答える