iT邦幫忙

0

.net core 如何 get 所有資料

  • 分享至 

  • xImage

Service

       //取得單一帳號寶寶
        public Baby_info_Entity getUsersAllbaby(int userid)
        {
            var baby = from a in _MyDbContext.BabyInfo
                       where a.Users.Id == userid
                       select a;
            return baby;
        }

Controller

        [HttpGet("{userid}")]
        public ActionResult<Baby_info_Entity> getUserAllbaby(int userid)
        {
            var Result = _BabyInfoService.getUsersAllbaby(userid);
            if(Result == null)
            {
                return NotFound("尚未新增寶寶");
            }
            else
            {
                return Result;
            }
        }

在Service那邊的 Return Baby 報錯
Cannot implicitly convert type 'System.Linq.IQueryable<BabyRecords_Server.Entities.Baby_info_Entity>' to 'BabyRecords_Server.Entities.Baby_info_Entity'. An explicit conversion exists (are you missing a cast?

請問是哪邊出了問題

看更多先前的討論...收起先前的討論...
powerc iT邦新手 1 級 ‧ 2021-12-17 08:34:12 檢舉
你return的型別錯誤,select完以後是IQueryable<Baby_info_Entity>,
想像成一個尚未儲存到你本機記憶體的list
powerc iT邦新手 1 級 ‧ 2021-12-17 08:35:41 檢舉
如果只要回傳一筆的話,可以改成 return baby.SingleOrDefault() 或是 return baby.FirstOrDefault()
jyo238 iT邦新手 5 級 ‧ 2021-12-17 10:35:48 檢舉
型別錯誤,取一筆要 return baby.FirstOrDefault()。還有你命名怪怪的,只取一筆但是function名稱卻是getUserAllbaby..
return baby; 左邊下中斷點
滑鼠移到
var baby 的baby上看型別,再看看你的Baby_info_Entity,應該就有想法了...
-------
getAll 取得單一 ?? 嗯...有點衝突
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

2
Season
iT邦研究生 4 級 ‧ 2021-12-17 09:14:57

試試更改成

 //取得單一帳號寶寶
public Baby_info_Entity getUsersAllbaby(int userid)
{
    var baby = (from a in _MyDbContext.BabyInfo
               where a.Users.Id == userid
               select a).FirstOrDefault();
    return baby;
}

在定義linq查詢表示式時,查詢是不會執行
只有在使用 ToList(),ToArray(),First(),FirstOrDefault()...這類方法才會執行語句
了解更多可以搜尋 linq 延遲查詢

我要發表回答

立即登入回答