小编kod*_*kas的帖子

Linq到EF - 不支持的功能

我正在使用Linq进行查询,由Entity Framework数据源提供支持.

我收到以下错误:

LINQ to Entities无法识别方法'Double Sqrt(Double)'方法,并且此方法无法转换为存储表达式.

这是我的函数的简化版本(我的版本更复杂,使用ACos,sin,cos和其他C#Math类函数).

  var objects =
            from n in context.Products.Where(p => p.r == r)
            let a = Math.Sqrt((double)n.Latitude)
            where a < 5
            orderby a
            select n;

        return objects.Take(100).ToList();
Run Code Online (Sandbox Code Playgroud)

我认为问题可能与Linq to EF(和SQL数据源)与Linq to SQL相比具有有限的受支持功能集的情况有关.我对此比较陌生,所以我不是百分百肯定.

任何人都可以给我指向正确的方向吗?

干杯,

c# sql linq linq-to-entities entity-framework

3
推荐指数
2
解决办法
2339
查看次数

如何获取Enum描述的字符串列表?

如何获得Enum值的列表?

例如,我有以下内容:

public enum ContactSubjects
{
    [Description("General Question")]
    General,
    [Description("Availability/Reservation")]
    Reservation,
    [Description("Other Issue")]
    Other
}
Run Code Online (Sandbox Code Playgroud)

我需要做的是将ContactSubject.General作为参数传递,它返回描述的列表.

此方法需要使用任何枚举,而不仅仅是ContactSubject(在我的示例中).签名应该类似于GetEnumDescriptions(枚举值).

c# enums types

3
推荐指数
1
解决办法
1万
查看次数

如何根据参数转换对象类型?

我有一个简单的问题,但我不确定处理它的最佳方法是什么.

我有几个不同的设置文件,我有一个GetData方法,它接收'path'参数.

        public static CountriesInfo GetDataFromFile(string path)
    {
        if (!File.Exists(path))
        {
            return null;
        }

        try
        {
            CountriesInfo tempData = new CountriesInfo();
            System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(tempData.GetType());
            StreamReader tempReader = new StreamReader(path);
            tempData = (CountriesInfo)x.Deserialize(tempReader);
            tempReader.Close();
            return tempData;
        }
        catch
        {
            return null;
        }
    }
Run Code Online (Sandbox Code Playgroud)

重构这个以支持传递对象类型,然后从方法中进行强制转换的最佳方法是什么?现在返回类型(在这个例子中)是CountriesInfo,但是我不希望有几个相同的函数,唯一的区别是返回类型和方法中的转换.

是否最好做一些像传递ref参数并从那个方式获取对象类型的东西?

谢谢!

c# casting xml-deserialization

2
推荐指数
1
解决办法
1169
查看次数