小编Mon*_*Zhu的帖子

LINQ To Entities无法识别方法Last.真?

在此查询中:

public static IEnumerable<IServerOnlineCharacter> GetUpdated()
{
    var context = DataContext.GetDataContext();
    return context.ServerOnlineCharacters
        .OrderBy(p => p.ServerStatus.ServerDateTime)
        .GroupBy(p => p.RawName)
        .Select(p => p.Last());
}
Run Code Online (Sandbox Code Playgroud)

我不得不把它切换到这个才能工作

public static IEnumerable<IServerOnlineCharacter> GetUpdated()
{
    var context = DataContext.GetDataContext();
    return context.ServerOnlineCharacters
        .OrderByDescending(p => p.ServerStatus.ServerDateTime)
        .GroupBy(p => p.RawName)
        .Select(p => p.FirstOrDefault());
}
Run Code Online (Sandbox Code Playgroud)

我甚p.First()至无法使用镜像第一个查询.

为什么在这样一个强大的ORM系统中存在这样的基本限制?

c# orm entity-framework

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

SQL连接在同一个表中的多个列上

我有2个子查询,但是我无法从同一个表中将列连接在一起.我试过了:

SELECT * FROM

(SELECT userid, listid 
FROM user_views_table
WHERE date='2013-05-15' AND view_type='lists') a

JOIN

(SELECT sourceid, destinationid
FROM actions_table
WHERE date='2013-05-15' AND payloadtype='lists_user' AND actiontype='delete') b

ON a.userid = b.sourceid
ON a.listid = b.destinationid;
Run Code Online (Sandbox Code Playgroud)

如果我只是用ON a.userid = b.sourceid它结束查询工作,但我怎么也可以在另一列上加入这些表ON a.listid = b.destinationid

任何帮助赞赏.

sql join

115
推荐指数
2
解决办法
24万
查看次数

访问C#中的路径被拒绝错误

我已经阅读了类似的帖子,但我无法弄清楚问题.

我更改了Windows权限并更改了路由.

当我尝试保存文件时,它会抛出异常:

访问路径****被拒绝.

string route="D:\\";
FileStream fs = new FileStream(route, FileMode.Create); <--here is the problem
        StreamWriter write = new StreamWriter(fs);
        patient person = new patient();
        patient.name = textBox1.Text;
        patient.name2 = textBox2.Text;
Run Code Online (Sandbox Code Playgroud)

c# filestream access-denied

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

WPF网格的底部边框

关于WPF网格控件,我有一个非常简单的问题.

我想在网格中的每一行设置一个底部边框,但只能找到如何在每个单元格周围放置所有4个边框..我的代码非常简单

<Grid Height="174" HorizontalAlignment="Left" Margin="23,289,0,0" Name="grid2" VerticalAlignment="Top" Width="730">
    <Grid.RowDefinitions>
        <RowDefinition Height="45" />
        <RowDefinition Height="25" />
        <RowDefinition Height="25" />
        <RowDefinition Height="25" />
        <RowDefinition Height="25" />
        <RowDefinition Height="25" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="255" />
        <ColumnDefinition Width="95" />
        <ColumnDefinition Width="95" />
        <ColumnDefinition Width="95" />
        <ColumnDefinition Width="95" />
        <ColumnDefinition Width="95" />
    </Grid.ColumnDefinitions>
</Grid>
Run Code Online (Sandbox Code Playgroud)

对于我正在使用的另一个网格需要所有四个边界,我正在使用

<Border Grid.Column="0" Grid.Row="0" BorderBrush="#61738B" BorderThickness="1" />
Run Code Online (Sandbox Code Playgroud)

PS网格的内容是一些标签,文本框等.如果这很重要的话.

感谢任何指针.

中号

c# wpf border wpf-grid

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

表达式不能包含lambda表达式

我已经获取了List<>下面的对象(with .Include()):

List<vDetail> entityvDetails =
    context.vDetails
    .Include("payInstallment.appsDetail")
    .Include("payInstallment.appsDetail.application")
    .Include("payInstallment.appsDetail.purposes")
    .Where(e => e.vch_id == 123).ToList();
Run Code Online (Sandbox Code Playgroud)

然后在前面的代码中的某处我尝试过滤实体记录,如下所示:

foreach (vDetail item in lstVDetails)
{
    ... 

    int purposeId = entityvDetails.Where(e => e.sad_id == item.sad_id).FirstOrDefault().payInstallment.appsDetail.purposes.prp_id;

    ...
}
Run Code Online (Sandbox Code Playgroud)

代码编译完美.但是,运行时返回跟随错误(尽管包括所有导航):

Object reference not set to an instance of an object.
Run Code Online (Sandbox Code Playgroud)

所以我设置使用监视窗口进行调试.现在在观察窗口中分析以下语句时:

entityVoucherDetails.Where(e => e.sad_id == item.sad_id).FirstOrDefault()
Run Code Online (Sandbox Code Playgroud)

监视窗口生成以下错误:

表达式不能包含lambda表达式.

如果有人能告诉我可能是什么原因?

c# linq lambda entity-framework entity-framework-4

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

DataGrid列宽不会自动更新

<DataGridTextColumn Binding="{Binding Name}" Width="*"/>
<DataGridTextColumn Binding="{Binding Change}" Width="Auto"/>
Run Code Online (Sandbox Code Playgroud)

Change更新的值时,其列不会更新以适合新值.因此列保持太小并且值被剪裁.
有任何想法吗?

.net c# wpf xaml datagrid

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

Directory.GetFiles 不会选取所有文件

我有一些代码旨在获取目录中的文件,这很简单

foreach (var Totalfile in new DirectoryInfo(rootfolder).GetFiles("*Totals*.csv", SearchOption.TopDirectoryOnly))
Run Code Online (Sandbox Code Playgroud)

文件命名如下:

Totals.CSV142344
Totals.CSV142409
Totals.CSV142433
Totals.CSV142501
Totals.CSV142528
Run Code Online (Sandbox Code Playgroud)

我的问题是它没有选择最后一个文件。

我已经修复了代码,改为:

foreach (var Totalfile in new DirectoryInfo(rootfolder).GetFiles("*Totals*.csv*", SearchOption.TopDirectoryOnly))
Run Code Online (Sandbox Code Playgroud)

说获取包含 Totals 和 .csv 的任何文件,以及 .csv 之后的任何内容。

我不明白的是为什么它获得了前四个文件,而不是底部。

我原以为原始代码不会提取任何文件?

c# filenames

23
推荐指数
1
解决办法
448
查看次数

十进制和数学运算

decimal在C#中进行了简单的转换.它看起来像这样:

private decimal BaseValue
{
    get; set;
}

public decimal ConvertedValue 
{
    get
    {
        return BaseValue * (365 / 360);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用.我假设因为C#正在处理分数中的数字作为整数.所以我可以这样做(有效):

public decimal ConvertedValue 
{
    get
    {
        return BaseValue * (decimal)((double)365 / (double)360);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在这看起来有点像矫枉过正,但我​​可以忍受.我的主要问题是:

为什么Visual Studio警告我'演员是多余的',对于(double)演员来说?如果我移除了(double)演员阵容,那么(decimal)演员阵容将变得多余.如果我删除它,那么我回到解决方案,这是行不通的.救命...?

c# casting decimal operands

18
推荐指数
2
解决办法
2288
查看次数

string.Contains作为谓词而不是函数调用?

我在SO上找到了这个代码示例(不记得从哪里:/),它允许我在启动我的应用程序时检查行代码参数:

if (e.Args.Length == 0 || e.Args.Any("-show".Contains))
{
  //show interface...
}
Run Code Online (Sandbox Code Playgroud)

我似乎无法理解它是如何"-show".Contains工作的.如果与(经典)有任何区别x => x.Contains('"-show")(除了明显的打字增益).

工作就像一个魅力,但我想明白为什么,我觉得一些大的东西是hapening.

c# linq predicate

15
推荐指数
1
解决办法
1125
查看次数

检查Object是否在每个属性中都为null

我有多个属性的类;

public class Employee
{
    public string TYPE { get; set; }
    public int? SOURCE_ID { get; set; }
    public string FIRST_NAME { get; set; }        
    public string LAST_NAME { get; set; }

    public List<Department> departmentList { get; set; }
    public List<Address> addressList { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

有时这个对象会让我在任何属性中都有价值

Employee emp = new Employee();
emp.FIRST_NAME= 'abc';
Run Code Online (Sandbox Code Playgroud)

剩余值为空.还行吧

但是,如何检查对象属性中的所有值何时为空

喜欢string.IsNullOrEmpty()对象?

我正在这样检查;

if(emp.FIRST_NAME == null && emp.LAST_NAME == null && emp.TYPE == null && emp.departmentList == null ...)
Run Code Online (Sandbox Code Playgroud)

c# null

12
推荐指数
2
解决办法
6795
查看次数