3

エンティティフレームワークを使用しています


private t_Market getMarketByCellsiteID(Guid cellsiteID)
{
    try
    {
        t_Market market = null;
        using (LiveLeaseEntities Entities = new LiveLeaseEntities())
        {
            market = (from m in Entities.t_Market
                      where m.OperatorId = (from o in Entities.t_CellSite
                                            where o.CellSiteId == Guid.Parse("53B7B160-20C4-4B60-948A-06570E6E3CBA")
                                            select o.OperatorId)
                      select m).Single();
            return market;
        }
    }

タイプ「System.Linq.IQueryable」を「System.Guid」に暗黙的に変換できません

4

2 に答える 2

2

私はこれがそれを修正するはずだと思います:

private t_Market getMarketByCellsiteID(Guid cellsiteID)
{
try
{
    t_Market market = null;
    using (LiveLeaseEntities Entities = new LiveLeaseEntities())
    {
        market = (from m in Entities.t_Market
                  where m.OperatorId == (from o in Entities.t_CellSite
                                        where o.CellSiteId == Guid.Parse("53B7B160-20C4-4B60-948A-06570E6E3CBA")
                                        select o.OperatorId).Single()
                  select m).Single();
        return market;
    }
}

2つのこと:と==の比較を行うためにが必要m.OperatorIdであり、それをLINQクエリと比較していました。これはIQuerableを返します。LINQクエリでSingle()を呼び出すと、それが実行され、比較する値が返されます。

于 2013-03-18T20:16:49.653 に答える
1

あなたの問題はこの比較にあります:

m.OperatorId = (from o in Entities.t_CellSite
    where o.CellSiteId == Guid.Parse("53B7B160-20C4-4B60-948A-06570E6E3CBA")
    select o.OperatorId)

を と を比較しSystem.GuidていSystem.Linq.IQueryable<System.Guid>ます。単一の結果のみを期待する場合は、次のようにすることができます。

m.OperatorId = (from o in Entities.t_CellSite
    where o.CellSiteId == Guid.Parse("53B7B160-20C4-4B60-948A-06570E6E3CBA")
    select o.OperatorId).First()
于 2013-03-18T20:15:45.757 に答える